1. Load all libraries required

library(readxl)
library(tidyverse)


library('dplyr')
library('readxl')
library(ggplot2)
library(dplyr) # required by custom function outlier_removal()
library(jmv) # ancova()
library(ggplot2) # ggplot()
library(gridExtra) # grid.arrange()

2. Pre analysis: Data import and cleaning

olink_delcode<- read_excel('DELCODE_Manual only.xlsx')
olink_delcode <- data.frame(olink_delcode)

colnames(olink_delcode)
 [1] "Repseudonym"    "Barcode_CSF"    "sex"            "Age"            "prmdiag"       
 [6] "bmi"            "ApoE"           "E4_Positive"    "AB_Ratio_Patho" "tTau_Patho"    
[11] "AT"             "AN"             "YKL40_ng_ml"    "AXL_ng_ml"      "Tyro3_pg_ml"   
[16] "TREM2_pg_ml"    "C1q_ng_ml"      "C3_ng_ml"       "C4_ng_ml"       "Factor_B_ng_ml"
[21] "Factor_H_ng_ml" "MIF_pg_ml"      "TNFR1_ng_mL"    "TNFR2_ng_mL"    "ICAM1_ng_mL"   
[26] "VCAM1_ng_mL"    "CRP_pg_ml"     
DC_thesis_manual <- subset(olink_delcode, select = c(Barcode_CSF,
                                               YKL40_ng_ml, AXL_ng_ml, Tyro3_pg_ml,
                                               TREM2_pg_ml, C1q_ng_ml, C3_ng_ml, C4_ng_ml,
                                               Factor_B_ng_ml, Factor_H_ng_ml, MIF_pg_ml,
                                               TNFR1_ng_mL, TNFR2_ng_mL, ICAM1_ng_mL, VCAM1_ng_mL,
                                               CRP_pg_ml, Age, sex, bmi, E4_Positive, 
                                               prmdiag, AB_Ratio_Patho, tTau_Patho, AT, AN))

DC_thesis_manual$A_N_cat <- factor(ifelse(DC_thesis_manual$AN == 0,
                                    "A-T-",
                                    ifelse(DC_thesis_manual$AN == 2,
                                           "A+T-",
                                           ifelse(DC_thesis_manual$AN == 1,
                                                  "A-T+",
                                                  "A+T+"))),
                             levels = c("A-T-", "A-T+", "A+T-", "A+T+"))
table(DC_thesis_manual$A_N_cat)

A-T- A-T+ A+T- A+T+ 
 147   20   45   80 
DC_thesis_manual$Diag <- factor(ifelse(DC_thesis_manual$prmdiag == 0 | DC_thesis_manual$prmdiag == 100,
                                           "CN",
                                           ifelse(DC_thesis_manual$prmdiag == 1,
                                                   "SCD",
                                                  ifelse(DC_thesis_manual$prmdiag == 2,
                                                         "MCI", "DAT"))),
                                    levels = c('CN',"SCD", "MCI", "DAT"))
table(DC_thesis_manual$Diag)

 CN SCD MCI DAT 
 94  94  68  37 
DC_thesis_manual$clinical_N_cat <- factor(ifelse(DC_thesis_manual$Diag == "CN" & 
                                                   DC_thesis_manual$tTau_Patho == 0,
                                        "CN_T-",
                                        ifelse(DC_thesis_manual$Diag == "CN" & 
                                                 DC_thesis_manual$tTau_Patho == 1,
                                               "CN_T+",
                                               ifelse(DC_thesis_manual$Diag == "SCD" & 
                                                        DC_thesis_manual$tTau_Patho == 0,
                                                      "SCD_T-",
                                                      ifelse(DC_thesis_manual$Diag == "SCD" & 
                                                               DC_thesis_manual$tTau_Patho == 1,
                                                             "SCD_T+",
                                                             ifelse(DC_thesis_manual$Diag == "MCI" & 
                                                                      DC_thesis_manual$tTau_Patho == 0,
                                                                    "MCI_T-",
                                                                    ifelse(DC_thesis_manual$Diag == "MCI" & 
                                                                             DC_thesis_manual$tTau_Patho == 1,
                                                                           "MCI_T+",
                                                                           ifelse(DC_thesis_manual$Diag == "DAT" & 
                                                                                    DC_thesis_manual$tTau_Patho == 0,
                                                                                  "DAT_T-",
                                                                                  ifelse(DC_thesis_manual$Diag == "DAT" & 
                                                                                           DC_thesis_manual$tTau_Patho == 1,
                                                                                         "DAT_T+", 'others')))))))),
                                 levels = c('CN_T-',"CN_T+", 'SCD_T-', 'SCD_T+', "MCI_T-", "MCI_T+","DAT_T-", "DAT_T+"))
table(DC_thesis_manual$clinical_N_cat)

 CN_T-  CN_T+ SCD_T- SCD_T+ MCI_T- MCI_T+ DAT_T- DAT_T+ 
    76     18     73     21     36     31      7     30 

Outlier removal function Higher than or less than 3 standard deviations

outlier_removal <- function(df) {
  find.outlier <- function(df) {
    if(!is.numeric(df)) {
      df
    }
    else {
      arith.mean <- mean(df, na.rm = TRUE)
      st.dev <- sd(df, na.rm = TRUE)
      df[which(df > (arith.mean + 3*st.dev) | df < (arith.mean - 3*st.dev))] <- NA
      df
    }
  }
  df %>% dplyr::mutate_all(find.outlier)
}

Removed outliers

DC_thesis_manual_clean <- outlier_removal(DC_thesis_manual[1:16])

Check for merge outlier removed columns

dim(DC_thesis_manual_clean)
[1] 293  16
DC_thesis_m <- merge(DC_thesis_manual_clean,
                     DC_thesis_manual[c(1, 17:ncol(DC_thesis_manual))],
                          by = "Barcode_CSF")
dim(DC_thesis_m)
[1] 293  28

Omit NAs to have homogenous samples

DC_thesis_m <- na.omit(DC_thesis_m)


table(DC_thesis_m$A_N_cat)

A-T- A-T+ A+T- A+T+ 
 129   17   41   62 
table(DC_thesis_m$Diag)

 CN SCD MCI DAT 
 84  82  52  31 
table(DC_thesis_m$clinical_N_cat)

 CN_T-  CN_T+ SCD_T- SCD_T+ MCI_T- MCI_T+ DAT_T- DAT_T+ 
    69     15     66     16     28     24      7     24 

Making BMI as character

DC_thesis_m$bmi <- as.numeric(as.character(DC_thesis_m$bmi)) 

Data is ready for analysis

3. AT scheme

3.1. YKL40_AT

(YKL40_A_T_plot <- ggplot(DC_thesis_m,
                          aes(x = A_N_cat, y = YKL40_ng_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "YKL40 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,1200, by = 200), limits = c(0,1200)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = YKL40_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = YKL40_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - YKL40_ng_ml                                                               
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            442328.374      3     147442.791    11.7518258    0.0000003   
   Age                370153.446      1     370153.446    29.5028247    0.0000001   
   sex                 15863.738      1      15863.738     1.2644083    0.2619370   
   bmi                 19605.960      1      19605.960     1.5626795    0.2124858   
   E4_Positive          2253.068      1       2253.068     0.1795792    0.6721131   
   Residuals         3023675.917    241      12546.373                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -130.68065    29.24838    241.0000    -4.4679622       0.0000729   
              -    A+T-              16.11617    22.78354    241.0000     0.7073602       1.0000000   
              -    A+T+             -70.93456    20.69020    241.0000    -3.4284141       0.0042834   
   A-T+       -    A+T-             146.79681    34.22983    241.0000     4.2885640       0.0001562   
              -    A+T+              59.74609    32.84650    241.0000     1.8189484       0.4209620   
   A+T-       -    A+T+             -87.05073    23.10788    241.0000    -3.7671444       0.0012457   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(YKL40_ng_ml, na.rm = TRUE), Std=sd(YKL40_ng_ml, na.rm = TRUE),
            Max=max(YKL40_ng_ml, na.rm = TRUE), Min=min(YKL40_ng_ml, na.rm = TRUE))
NA

3.2. AXL_AT

(AXL_A_T_plot <- ggplot(DC_thesis_m,
                          aes(x = A_N_cat, y = AXL_ng_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "AXL (ng/mL)") +
    scale_y_continuous(breaks = seq(0,50, by = 10), limits = c(0,50)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = AXL_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = AXL_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - AXL_ng_ml                                                                   
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            986.559554      3     328.853185    15.60766618    < .0000001   
   Age                  7.384877      1       7.384877     0.35049287     0.5543892   
   sex                  1.067638      1       1.067638     0.05067104     0.8220905   
   bmi                 74.299250      1      74.299250     3.52630885     0.0616097   
   E4_Positive          7.811091      1       7.811091     0.37072138     0.5431848   
   Residuals         5077.864722    241      21.069978                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE           df          t              p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -7.07852803    1.1986013    241.0000    -5.90565706    < .0000001   
              -    A+T-           -0.08815696    0.9336714    241.0000    -0.09441968       1.0000000   
              -    A+T+           -3.10159674    0.8478862    241.0000    -3.65803421       0.0018729   
   A-T+       -    A+T-            6.99037108    1.4027416    241.0000     4.98336332       0.0000072   
              -    A+T+            3.97693129    1.3460526    241.0000     2.95451409       0.0206510   
   A+T-       -    A+T+           -3.01343979    0.9469632    241.0000    -3.18221437       0.0099220   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(AXL_ng_ml, na.rm = TRUE), Std=sd(AXL_ng_ml, na.rm = TRUE),
            Max=max(AXL_ng_ml, na.rm = TRUE), Min=min(AXL_ng_ml, na.rm = TRUE))

3.3. Tyro3_AT

(Tyro3_A_T_plot <- ggplot(DC_thesis_m,
                        aes(x = A_N_cat, y = Tyro3_pg_ml, 
                            colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Tyro3 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,14000, by = 2000), limits = c(0,14000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Tyro3_pg_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = Tyro3_pg_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Tyro3_pg_ml                                                                
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           6.898650e+7      3    2.299550e+7    16.9731533    < .0000001   
   Age                  379212.6      1       379212.6     0.2798997     0.5972539   
   sex                  459956.7      1       459956.7     0.3394975     0.5606641   
   bmi                 1776868.4      1      1776868.4     1.3115201     0.2532556   
   E4_Positive          746948.7      1       746948.7     0.5513286     0.4584984   
   Residuals         3.265107e+8    241      1354816.0                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -2007.5910    303.9365    241.0000    -6.6052978    < .0000001   
              -    A+T-              123.5141    236.7566    241.0000     0.5216920       1.0000000   
              -    A+T+             -526.4993    215.0036    241.0000    -2.4487933       0.0902824   
   A-T+       -    A+T-             2131.1051    355.7016    241.0000     5.9912725    < .0000001   
              -    A+T+             1481.0917    341.3266    241.0000     4.3392215       0.0001263   
   A+T-       -    A+T+             -650.0134    240.1271    241.0000    -2.7069553       0.0436571   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(Tyro3_pg_ml, na.rm = TRUE), Std=sd(Tyro3_pg_ml, na.rm = TRUE),
            Max=max(Tyro3_pg_ml, na.rm = TRUE), Min=min(Tyro3_pg_ml, na.rm = TRUE))
NA

3.4. TREM2_AT

(TREM2_A_T_plot <- ggplot(DC_thesis_m,
                          aes(x = A_N_cat, y = TREM2_pg_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TREM2 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,14000, by = 2000), limits = c(0,14000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TREM2_pg_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = TREM2_pg_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TREM2_pg_ml                                                                  
 ───────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F               p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           5.101179e+7      3    1.700393e+7    12.891782625    < .0000001   
   Age               7200216.833      1    7200216.833     5.458951863     0.0202887   
   sex                  4184.927      1       4184.927     0.003172865     0.9551270   
   bmi                833633.810      1     833633.810     0.632031916     0.4273932   
   E4_Positive       3.440095e+7      1    3.440095e+7    26.081591277     0.0000007   
   Residuals         3.178728e+8    241    1318974.231                                 
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -1691.1851    299.8892    241.0000    -5.6393661       0.0000003   
              -    A+T-             -165.6639    233.6039    241.0000    -0.7091655       1.0000000   
              -    A+T+             -684.6612    212.1405    241.0000    -3.2273941       0.0085359   
   A-T+       -    A+T-             1525.5212    350.9650    241.0000     4.3466479       0.0001224   
              -    A+T+             1006.5239    336.7814    241.0000     2.9886563       0.0185517   
   A+T-       -    A+T+             -518.9973    236.9295    241.0000    -2.1905133       0.1766732   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TREM2_pg_ml, na.rm = TRUE), Std=sd(TREM2_pg_ml, na.rm = TRUE),
            Max=max(TREM2_pg_ml, na.rm = TRUE), Min=min(TREM2_pg_ml, na.rm = TRUE))

3.5. C1q_AT

(C1q_A_T_plot <- ggplot(DC_thesis_m,
                          aes(x = A_N_cat, y = C1q_ng_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C1q (ng/mL)") +
    scale_y_continuous(breaks = seq(0,600, by = 100), limits = c(0,600)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))



ancova(formula = C1q_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = C1q_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C1q_ng_ml                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           74226.91726      3    24742.30575     7.79243479    0.0000550   
   Age               24016.88597      1    24016.88597     7.56396836    0.0064063   
   sex               51991.43830      1    51991.43830    16.37437904    0.0000701   
   bmi                  51.40037      1       51.40037     0.01618823    0.8988621   
   E4_Positive        3572.97375      1     3572.97375     1.12528579    0.2898450   
   Residuals        765215.98757    241     3175.17007                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -69.018590    14.71385    241.0000    -4.6907242       0.0000274   
              -    A+T-             -2.429943    11.46161    241.0000    -0.2120072       1.0000000   
              -    A+T+            -15.868429    10.40852    241.0000    -1.5245614       0.7720783   
   A-T+       -    A+T-             66.588647    17.21984    241.0000     3.8669722       0.0008508   
              -    A+T+             53.150161    16.52393    241.0000     3.2165559       0.0088510   
   A+T-       -    A+T+            -13.438486    11.62477    241.0000    -1.1560212       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(C1q_ng_ml, na.rm = TRUE), Std=sd(C1q_ng_ml, na.rm = TRUE),
            Max=max(C1q_ng_ml, na.rm = TRUE), Min=min(C1q_ng_ml, na.rm = TRUE))

3.6. C3_AT

(C3_A_T_plot <- ggplot(DC_thesis_m,
                        aes(x = A_N_cat, y = C3_ng_ml, 
                            colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C3 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,5000, by = 500), limits = c(0, 5000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C3_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = C3_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C3_ng_ml                                                                  
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat             397849.49      3      132616.50    0.27540989    0.8431128   
   Age                 698109.99      1      698109.99    1.44979243    0.2297425   
   sex                 900828.01      1      900828.01    1.87078493    0.1726593   
   bmi                1387099.44      1     1387099.44    2.88064391    0.0909411   
   E4_Positive          47539.05      1       47539.05    0.09872622    0.7536354   
   Residuals         1.160473e+8    241      481524.09                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                        
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+             -81.04673    181.1973    241.0000    -0.44728442       1.0000000   
              -    A+T-            -119.05666    141.1468    241.0000    -0.84349528       1.0000000   
              -    A+T+             -63.47687    128.1783    241.0000    -0.49522319       1.0000000   
   A-T+       -    A+T-             -38.00993    212.0580    241.0000    -0.17924310       1.0000000   
              -    A+T+              17.56985    203.4881    241.0000     0.08634340       1.0000000   
   A+T-       -    A+T+              55.57979    143.1562    241.0000     0.38824584       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(C3_ng_ml, na.rm = TRUE), Std=sd(C3_ng_ml, na.rm = TRUE),
            Max=max(C3_ng_ml, na.rm = TRUE), Min=min(C3_ng_ml, na.rm = TRUE))

3.7. C4_AT

(C4_A_T_plot <- ggplot(DC_thesis_m,
                       aes(x = A_N_cat, y = C4_ng_ml, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C4 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C4_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = C4_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C4_ng_ml                                                                
 ──────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F           p           
 ──────────────────────────────────────────────────────────────────────────────── 
   A_N_cat             335243.31      3      111747.77    3.140854    0.0260016   
   Age                 132323.55      1      132323.55    3.719170    0.0549657   
   sex                  80161.83      1       80161.83    2.253080    0.1346578   
   bmi                 110008.14      1      110008.14    3.091959    0.0799493   
   E4_Positive         107046.69      1      107046.69    3.008723    0.0840961   
   Residuals          8574487.02    241       35578.78                            
 ──────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -128.13673    49.25363    241.0000    -2.6015693       0.0591252   
              -    A+T-              28.29967    38.36698    241.0000     0.7376050       1.0000000   
              -    A+T+             -34.64201    34.84184    241.0000    -0.9942648       1.0000000   
   A-T+       -    A+T-             156.43641    57.64229    241.0000     2.7139175       0.0427772   
              -    A+T+              93.49472    55.31279    241.0000     1.6902913       0.5535912   
   A+T-       -    A+T+             -62.94169    38.91317    241.0000    -1.6174907       0.6424828   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(C4_ng_ml, na.rm = TRUE), Std=sd(C4_ng_ml, na.rm = TRUE),
            Max=max(C4_ng_ml, na.rm = TRUE), Min=min(C4_ng_ml, na.rm = TRUE))

3.8. FactorB_AT

(FB_A_T_plot <- ggplot(DC_thesis_m,
                       aes(x = A_N_cat, y = Factor_B_ng_ml, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor B (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Factor_B_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = Factor_B_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_B_ng_ml                                                           
 ───────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p           
 ───────────────────────────────────────────────────────────────────────────────── 
   A_N_cat             288200.40      3       96066.80    2.1965089    0.0890931   
   Age                  21339.27      1       21339.27    0.4879094    0.4855348   
   sex                  48461.88      1       48461.88    1.1080514    0.2935602   
   bmi                 351605.64      1      351605.64    8.0392490    0.0049661   
   E4_Positive         112323.12      1      112323.12    2.5681999    0.1103416   
   Residuals         1.054041e+7    241       43736.13                             
 ───────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -105.22191    54.60883    241.0000    -1.9268296       0.3310600   
              -    A+T-              58.71830    42.53850    241.0000     1.3803566       1.0000000   
              -    A+T+              11.39858    38.63009    241.0000     0.2950701       1.0000000   
   A-T+       -    A+T-             163.94021    63.90956    241.0000     2.5651908       0.0655104   
              -    A+T+             116.62049    61.32678    241.0000     1.9016243       0.3504774   
   A+T-       -    A+T+             -47.31972    43.14408    241.0000    -1.0967836       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(Factor_B_ng_ml, na.rm = TRUE), Std=sd(Factor_B_ng_ml, na.rm = TRUE),
            Max=max(Factor_B_ng_ml, na.rm = TRUE), Min=min(Factor_B_ng_ml, na.rm = TRUE))

3.9. FactorH_AT

(FH_A_T_plot <- ggplot(DC_thesis_m,
                       aes(x = A_N_cat, y = Factor_H_ng_ml, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor H (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Factor_H_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = Factor_H_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_H_ng_ml                                                          
 ──────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F           p           
 ──────────────────────────────────────────────────────────────────────────────── 
   A_N_cat             335622.53      3      111874.18    4.225489    0.0061891   
   Age                  62897.00      1       62897.00    2.375621    0.1245546   
   sex                 137237.08      1      137237.08    5.183447    0.0236805   
   bmi                  91109.31      1       91109.31    3.441200    0.0648107   
   E4_Positive          67810.31      1       67810.31    2.561196    0.1108257   
   Residuals          6380722.79    241       26476.03                            
 ──────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -124.35378    42.48828    241.0000    -2.9267788       0.0225143   
              -    A+T-              43.02745    33.09698    241.0000     1.3000415       1.0000000   
              -    A+T+             -19.43513    30.05605    241.0000    -0.6466295       1.0000000   
   A-T+       -    A+T-             167.38124    49.72469    241.0000     3.3661597       0.0053216   
              -    A+T+             104.91866    47.71516    241.0000     2.1988536       0.1730347   
   A+T-       -    A+T+             -62.46258    33.56815    241.0000    -1.8607691       0.3839680   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(Factor_H_ng_ml, na.rm = TRUE), Std=sd(Factor_H_ng_ml, na.rm = TRUE),
            Max=max(Factor_H_ng_ml, na.rm = TRUE), Min=min(Factor_H_ng_ml, na.rm = TRUE))

3.10. MIF_AT

(MIF_A_T_plot <- ggplot(DC_thesis_m,
                       aes(x = A_N_cat, y = MIF_pg_ml, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "MIF (pg/mL)") +
    scale_y_continuous(breaks = seq(0,30000, by = 5000), limits = c(0, 30000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = MIF_pg_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = MIF_pg_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - MIF_pg_ml                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F               p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           5.926305e+8      3    1.975435e+8    19.735678143    < .0000001   
   Age               4.176001e+7      1    4.176001e+7     4.172053426     0.0421843   
   sex                  19385.83      1       19385.83     0.001936751     0.9649340   
   bmi                 931325.55      1      931325.55     0.093044525     0.7606050   
   E4_Positive        8495250.42      1     8495250.42     0.848722059     0.3578354   
   Residuals         2.412280e+9    241    1.000946e+7                                 
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                      
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t            p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -4987.3513    826.1293    241.0000    -6.037010    < .0000001   
              -    A+T-              826.3967    643.5279    241.0000     1.284166       1.0000000   
              -    A+T+            -2253.7925    584.4009    241.0000    -3.856586       0.0008856   
   A-T+       -    A+T-             5813.7480    966.8319    241.0000     6.013194    < .0000001   
              -    A+T+             2733.5589    927.7593    241.0000     2.946409       0.0211803   
   A+T-       -    A+T+            -3080.1891    652.6891    241.0000    -4.719228       0.0000241   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(MIF_pg_ml, na.rm = TRUE), Std=sd(MIF_pg_ml, na.rm = TRUE),
            Max=max(MIF_pg_ml, na.rm = TRUE), Min=min(MIF_pg_ml, na.rm = TRUE))

3.11. TNFR1_AT

(TNFR1_A_T_plot <- ggplot(DC_thesis_m,
                        aes(x = A_N_cat, y = TNFR1_ng_mL, 
                            colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,3, by = 0.5), limits = c(0, 3)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = TNFR1_ng_mL ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = TNFR1_ng_mL ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR1_ng_mL                                                                 
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            1.69555985      3     0.56518662    12.72789827    < .0000001   
   Age                0.10156776      1     0.10156776     2.28728718     0.1317479   
   sex               6.712165e-4      1    6.712165e-4     0.01511567     0.9022525   
   bmi                0.03300424      1     0.03300424     0.74324941     0.3894790   
   E4_Positive        0.01018089      1     0.01018089     0.22927181     0.6324984   
   Residuals         10.70168631    241     0.04440534                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.24412049    0.05502503    241.0000    -4.4365355       0.0000835   
              -    A+T-            0.01573525    0.04286271    241.0000     0.3671081       1.0000000   
              -    A+T+           -0.15698647    0.03892451    241.0000    -4.0331012       0.0004435   
   A-T+       -    A+T-            0.25985574    0.06439664    241.0000     4.0352374       0.0004397   
              -    A+T+            0.08713402    0.06179418    241.0000     1.4100684       0.9588525   
   A+T-       -    A+T+           -0.17272172    0.04347290    241.0000    -3.9730892       0.0005625   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TNFR1_ng_mL, na.rm = TRUE), Std=sd(TNFR1_ng_mL, na.rm = TRUE),
            Max=max(TNFR1_ng_mL, na.rm = TRUE), Min=min(TNFR1_ng_mL, na.rm = TRUE))

3.12. TNFR2_AT

(TNFR2_A_T_plot <- ggplot(DC_thesis_m,
                          aes(x = A_N_cat, y = TNFR2_ng_mL, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR2 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,5, by = 1), limits = c(0, 5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR2_ng_mL ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = TNFR2_ng_mL ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR2_ng_mL                                                               
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            4.94904525      3     1.64968175    10.3923057    0.0000019   
   Age                1.44539971      1     1.44539971     9.1054142    0.0028220   
   sex                0.07826978      1     0.07826978     0.4930669    0.4832400   
   bmi                0.04539024      1     0.04539024     0.2859396    0.5933274   
   E4_Positive        0.34420163      1     0.34420163     2.1683264    0.1421842   
   Residuals         38.25650565    241     0.15874069                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.41268541    0.10403676    241.0000    -3.9667269       0.0005768   
              -    A+T-           -0.02632884    0.08104125    241.0000    -0.3248819       1.0000000   
              -    A+T+           -0.29824323    0.07359523    241.0000    -4.0524806       0.0004104   
   A-T+       -    A+T-            0.38635658    0.12175583    241.0000     3.1732080       0.0102221   
              -    A+T+            0.11444218    0.11683531    241.0000     0.9795171       1.0000000   
   A+T-       -    A+T+           -0.27191439    0.08219496    241.0000    -3.3081640       0.0064958   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TNFR2_ng_mL, na.rm = TRUE), Std=sd(TNFR2_ng_mL, na.rm = TRUE),
            Max=max(TNFR2_ng_mL, na.rm = TRUE), Min=min(TNFR2_ng_mL, na.rm = TRUE))

3.13. ICAM1_AT

(ICAM1_A_T_plot <- ggplot(DC_thesis_m,
                          aes(x = A_N_cat, y = ICAM1_ng_mL, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "ICAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,20, by = 5), limits = c(0, 20)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = ICAM1_ng_mL ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = ICAM1_ng_mL ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - ICAM1_ng_mL                                                              
 ───────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p           
 ───────────────────────────────────────────────────────────────────────────────── 
   A_N_cat             40.273775      3      13.424592    5.5720826    0.0010341   
   Age                  1.212850      1       1.212850    0.5034120    0.4786906   
   sex                  4.788841      1       4.788841    1.9876821    0.1598727   
   bmi                  8.321434      1       8.321434    3.4539390    0.0643204   
   E4_Positive          2.594765      1       2.594765    1.0769971    0.3004104   
   Residuals          580.631479    241       2.409259                             
 ───────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                        
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE           df          t             p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -1.4069534    0.4053073    241.0000    -3.4713248       0.0036816   
              -    A+T-             0.1845634    0.3157212    241.0000     0.5845772       1.0000000   
              -    A+T+            -0.5054220    0.2867129    241.0000    -1.7628154       0.4751944   
   A-T+       -    A+T-             1.5915168    0.4743374    241.0000     3.3552418       0.0055263   
              -    A+T+             0.9015314    0.4551680    241.0000     1.9806562       0.2926016   
   A+T-       -    A+T+            -0.6899854    0.3202158    241.0000    -2.1547511       0.1930353   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(ICAM1_ng_mL, na.rm = TRUE), Std=sd(ICAM1_ng_mL, na.rm = TRUE),
            Max=max(ICAM1_ng_mL, na.rm = TRUE), Min=min(ICAM1_ng_mL, na.rm = TRUE))

3.14. VCAM1_AT

(VCAM1_A_T_plot <- ggplot(DC_thesis_m,
                          aes(x = A_N_cat, y = VCAM1_ng_mL, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "VCAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,40, by = 10), limits = c(0, 40)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = VCAM1_ng_mL ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = VCAM1_ng_mL ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - VCAM1_ng_mL                                                              
 ───────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p           
 ───────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            110.229143      3      36.743048    4.1914719    0.0064751   
   Age                  7.907160      1       7.907160    0.9020112    0.3431944   
   sex                 31.331783      1      31.331783    3.5741806    0.0598841   
   bmi                  3.182517      1       3.182517    0.3630464    0.5473857   
   E4_Positive         14.677502      1      14.677502    1.6743395    0.1969169   
   Residuals         2112.640779    241       8.766144                             
 ───────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                        
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE           df          t             p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -2.3539300    0.7731202    241.0000    -3.0447143       0.0155252   
              -    A+T-             0.2898366    0.6022355    241.0000     0.4812678       1.0000000   
              -    A+T+            -0.8183357    0.5469024    241.0000    -1.4963104       0.8152872   
   A-T+       -    A+T-             2.6437666    0.9047945    241.0000     2.9219526       0.0228538   
              -    A+T+             1.5355943    0.8682290    241.0000     1.7686512       0.4693023   
   A+T-       -    A+T+            -1.1081723    0.6108089    241.0000    -1.8142701       0.4252776   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(VCAM1_ng_mL, na.rm = TRUE), Std=sd(VCAM1_ng_mL, na.rm = TRUE),
            Max=max(VCAM1_ng_mL, na.rm = TRUE), Min=min(VCAM1_ng_mL, na.rm = TRUE))

3.15. CRP_AT

(CRP_A_T_plot <- ggplot(DC_thesis_m,
                          aes(x = A_N_cat, y = CRP_pg_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "CRP (pg/mL)") +
    scale_y_continuous(breaks = seq(0,50000, by = 12500), limits = c(0, 50000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = CRP_pg_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = CRP_pg_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - CRP_pg_ml                                                                 
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           2.539068e+7      3      8463560.9    0.24941583    0.8617091   
   Age                  876612.3      1       876612.3    0.02583321    0.8724430   
   sex                 6029127.6      1      6029127.6    0.17767461    0.6737550   
   bmi               2.402532e+8      1    2.402532e+8    7.08011105    0.0083181   
   E4_Positive       1.979741e+7      1    1.979741e+7    0.58341725    0.4457231   
   Residuals         8.177982e+9    241    3.393354e+7                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -1068.6582    1521.098    241.0000    -0.7025570       1.0000000   
              -    A+T-             -659.7890    1184.886    241.0000    -0.5568375       1.0000000   
              -    A+T+             -122.9834    1076.019    241.0000    -0.1142948       1.0000000   
   A-T+       -    A+T-              408.8692    1780.165    241.0000     0.2296806       1.0000000   
              -    A+T+              945.6749    1708.223    241.0000     0.5536016       1.0000000   
   A+T-       -    A+T+              536.8056    1201.754    241.0000     0.4466851       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(CRP_pg_ml, na.rm = TRUE), Std=sd(CRP_pg_ml, na.rm = TRUE),
            Max=max(CRP_pg_ml, na.rm = TRUE), Min=min(CRP_pg_ml, na.rm = TRUE))

4. Diagnosis scheme

4.1. YKL40_Diag

(YKL40_diag_plot <- ggplot(DC_thesis_m,
                          aes(x = Diag, y = YKL40_ng_ml, 
                              colour = Diag, fill = Diag)) +
   geom_boxplot() +
   geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
   labs(x = NULL, y = "YKL40 (ng/mL)") +
   scale_y_continuous(breaks = seq(0,1200, by = 200), limits = c(0,1200)) +
   scale_colour_manual(values = c("black","black", "black", "black")) + 
   scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
   theme_bw() +
   theme(legend.position = "none",
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank()))


ancova(formula = YKL40_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = YKL40_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - YKL40_ng_ml                                                                
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag               70698.1463      3     23566.0488     1.67272626    0.1734952   
   Age               393192.5943      1    393192.5943    27.90894581    0.0000003   
   sex                 7118.9274      1      7118.9274     0.50530392    0.4778662   
   bmi                77948.7345      1     77948.7345     5.53282803    0.0194683   
   E4_Positive          287.8757      1       287.8757     0.02043352    0.8864524   
   Residuals        3395306.1454    241     14088.4072                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                     
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD           14.371759    19.12834    241.0000     0.75133311       1.0000000   
           -    MCI          -33.157254    22.39292    241.0000    -1.48070222       0.8399525   
           -    DAT           -1.517767    27.51219    241.0000    -0.05516706       1.0000000   
   SCD     -    MCI          -47.529012    21.26475    241.0000    -2.23510811       0.1579628   
           -    DAT          -15.889525    26.22770    241.0000    -0.60583000       1.0000000   
   MCI     -    DAT           31.639487    28.10668    241.0000     1.12569293       1.0000000   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(YKL40_ng_ml, na.rm = TRUE), Std=sd(YKL40_ng_ml, na.rm = TRUE),
            Max=max(YKL40_ng_ml, na.rm = TRUE), Min=min(YKL40_ng_ml, na.rm = TRUE))

4.2. AXL_Diag

(AXL_diag_plot <- ggplot(DC_thesis_m,
                        aes(x = Diag, y = AXL_ng_ml, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "AXL (ng/mL)") +
    scale_y_continuous(breaks = seq(0,50, by = 10), limits = c(0,50)) +
    scale_colour_manual(values = c("black","black", "black", "black")) + 
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = AXL_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = AXL_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - AXL_ng_ml                                                                 
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag               132.135381      3      44.045127    1.78933895    0.1498046   
   Age                 15.893487      1      15.893487    0.64567496    0.4224551   
   sex                  3.688896      1       3.688896    0.14986187    0.6990090   
   bmi                179.429770      1     179.429770    7.28935752    0.0074280   
   E4_Positive          2.224020      1       2.224020    0.09035108    0.7639904   
   Residuals         5932.288896    241      24.615307                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          1.62198414    0.7995563    241.0000     2.02860525       0.2615894   
           -    MCI          1.79898890    0.9360143    241.0000     1.92196725       0.3347339   
           -    DAT          1.54153267    1.1499974    241.0000     1.34046620       1.0000000   
   SCD     -    MCI          0.17700476    0.8888571    241.0000     0.19913749       1.0000000   
           -    DAT         -0.08045147    1.0963061    241.0000    -0.07338413       1.0000000   
   MCI     -    DAT         -0.25745623    1.1748466    241.0000    -0.21914029       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(AXL_ng_ml, na.rm = TRUE), Std=sd(AXL_ng_ml, na.rm = TRUE),
            Max=max(AXL_ng_ml, na.rm = TRUE), Min=min(AXL_ng_ml, na.rm = TRUE))

4.3. Tyro3_Diag

(Tyro3_Diag_plot <- ggplot(DC_thesis_m,
                          aes(x = Diag, y = Tyro3_pg_ml, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Tyro3 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,10000, by = 1000), limits = c(0,10000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) + 
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Tyro3_pg_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = Tyro3_pg_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Tyro3_pg_ml                                                               
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag              1.308245e+7      3     4360816.68    2.74821240    0.0435273   
   Age                5002869.50      1     5002869.50    3.15283788    0.0770569   
   sex                 264779.60      1      264779.60    0.16686567    0.6832753   
   bmi                7157411.91      1     7157411.91    4.51064321    0.0347035   
   E4_Positive          92043.06      1       92043.06    0.05800608    0.8098804   
   Residuals         3.824147e+8    241     1586782.99                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD           394.70910    203.0043    241.0000     1.9443388       0.3181093   
           -    MCI           363.63639    237.6505    241.0000     1.5301313       0.7637745   
           -    DAT           793.78504    291.9799    241.0000     2.7186287       0.0421909   
   SCD     -    MCI           -31.07271    225.6774    241.0000    -0.1376864       1.0000000   
           -    DAT           399.07594    278.3479    241.0000     1.4337307       0.9176715   
   MCI     -    DAT           430.14865    298.2891    241.0000     1.4420531       0.9035139   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(Tyro3_pg_ml, na.rm = TRUE), Std=sd(Tyro3_pg_ml, na.rm = TRUE),
            Max=max(Tyro3_pg_ml, na.rm = TRUE), Min=min(Tyro3_pg_ml, na.rm = TRUE))

4.4. TREM2_Diag

(TREM2_Diag_plot <- ggplot(DC_thesis_m,
                          aes(x = Diag, y = TREM2_pg_ml, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TREM2 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,14000, by = 2000), limits = c(0,14000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TREM2_pg_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = TREM2_pg_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TREM2_pg_ml                                                                 
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   Diag              1.402052e+7      3     4673505.81     3.17393343     0.0248934   
   Age               1.940661e+7      1    1.940661e+7    13.17967679     0.0003456   
   sex                  77730.65      1       77730.65     0.05278947     0.8184735   
   bmi                3324965.16      1     3324965.16     2.25809456     0.1342267   
   E4_Positive       5.686691e+7      1    5.686691e+7    38.62020959    < .0000001   
   Residuals         3.548641e+8    241     1472464.98                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD            594.6119    195.5550    241.0000     3.0406377       0.0157290   
           -    MCI            403.4644    228.9298    241.0000     1.7623934       0.4756228   
           -    DAT            270.4583    281.2657    241.0000     0.9615759       1.0000000   
   SCD     -    MCI           -191.1475    217.3961    241.0000    -0.8792591       1.0000000   
           -    DAT           -324.1536    268.1339    241.0000    -1.2089245       1.0000000   
   MCI     -    DAT           -133.0061    287.3433    241.0000    -0.4628822       1.0000000   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(TREM2_pg_ml, na.rm = TRUE), Std=sd(TREM2_pg_ml, na.rm = TRUE),
            Max=max(TREM2_pg_ml, na.rm = TRUE), Min=min(TREM2_pg_ml, na.rm = TRUE))

4.5. C1q_Diag

(C1q_Diag_plot <- ggplot(DC_thesis_m,
                        aes(x = Diag, y = C1q_ng_ml, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C1q (ng/mL)") +
    scale_y_continuous(breaks = seq(0,600, by = 100), limits = c(0,600)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C1q_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = C1q_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C1q_ng_ml                                                                 
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag                1050.6810      3       350.2270     0.1006745    0.9595653   
   Age                29206.5871      1     29206.5871     8.3955782    0.0041077   
   sex                50709.8326      1     50709.8326    14.5767927    0.0001712   
   bmi                  876.5369      1       876.5369     0.2519649    0.6161532   
   E4_Positive         3290.8566      1      3290.8566     0.9459730    0.3317216   
   Residuals         838392.2238    241      3478.8059                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD           2.7287344     9.505206    241.0000     0.28707789       1.0000000   
           -    MCI          -0.5093432    11.127433    241.0000    -0.04577365       1.0000000   
           -    DAT          -4.0449785    13.671285    241.0000    -0.29587405       1.0000000   
   SCD     -    MCI          -3.2380776    10.566822    241.0000    -0.30643816       1.0000000   
           -    DAT          -6.7737130    13.032997    241.0000    -0.51973563       1.0000000   
   MCI     -    DAT          -3.5356353    13.966695    241.0000    -0.25314760       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(C1q_ng_ml, na.rm = TRUE), Std=sd(C1q_ng_ml, na.rm = TRUE),
            Max=max(C1q_ng_ml, na.rm = TRUE), Min=min(C1q_ng_ml, na.rm = TRUE))

4.6. C3_Diag

(C3_Diag_plot <- ggplot(DC_thesis_m,
                       aes(x = Diag, y = C3_ng_ml, 
                           colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C3 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,5000, by = 500), limits = c(0, 5000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C3_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = C3_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C3_ng_ml                                                                  
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag               1127900.40      3      375966.80    0.78572802    0.5028994   
   Age                 499409.73      1      499409.73    1.04370977    0.3079847   
   sex                 779974.29      1      779974.29    1.63005790    0.2029239   
   bmi                1406716.13      1     1406716.13    2.93987736    0.0877028   
   E4_Positive          43123.63      1       43123.63    0.09012349    0.7642790   
   Residuals         1.153173e+8    241      478494.84                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD           -44.22173    111.4769    241.0000    -0.3966895       1.0000000   
           -    MCI          -116.76773    130.5024    241.0000    -0.8947554       1.0000000   
           -    DAT          -230.12030    160.3367    241.0000    -1.4352319       0.9151053   
   SCD     -    MCI           -72.54600    123.9276    241.0000    -0.5853903       1.0000000   
           -    DAT          -185.89857    152.8508    241.0000    -1.2162090       1.0000000   
   MCI     -    DAT          -113.35257    163.8012    241.0000    -0.6920129       1.0000000   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(C3_ng_ml, na.rm = TRUE), Std=sd(C3_ng_ml, na.rm = TRUE),
            Max=max(C3_ng_ml, na.rm = TRUE), Min=min(C3_ng_ml, na.rm = TRUE))
NA

4.7. C4_Diag

(C4_Diag_plot <- ggplot(DC_thesis_m,
                       aes(x = Diag, y = C4_ng_ml, 
                           colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C4 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C4_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = C4_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C4_ng_ml                                                                
 ──────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F           p           
 ──────────────────────────────────────────────────────────────────────────────── 
   Diag                137443.33      3       45814.44    1.258655    0.2892303   
   Age                  54098.14      1       54098.14    1.486232    0.2239939   
   sex                  67726.80      1       67726.80    1.860650    0.1738223   
   bmi                  59909.16      1       59909.16    1.645877    0.2007534   
   E4_Positive          66351.20      1       66351.20    1.822859    0.1782400   
   Residuals          8772287.00    241       36399.53                            
 ──────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD           -14.49953    30.74640    241.0000    -0.4715846       1.0000000   
           -    MCI           -43.79650    35.99381    241.0000    -1.2167787       1.0000000   
           -    DAT           -78.09130    44.22238    241.0000    -1.7658772       0.4720956   
   SCD     -    MCI           -29.29696    34.18040    241.0000    -0.8571275       1.0000000   
           -    DAT           -63.59176    42.15772    241.0000    -1.5084252       0.7965333   
   MCI     -    DAT           -34.29480    45.17794    241.0000    -0.7591050       1.0000000   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(C4_ng_ml, na.rm = TRUE), Std=sd(C4_ng_ml, na.rm = TRUE),
            Max=max(C4_ng_ml, na.rm = TRUE), Min=min(C4_ng_ml, na.rm = TRUE))

4.8. FactorB_Diag

(FB_Diag_plot <- ggplot(DC_thesis_m,
                       aes(x = Diag, y = Factor_B_ng_ml, 
                           colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor B (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Factor_B_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = Factor_B_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_B_ng_ml                                                           
 ───────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p           
 ───────────────────────────────────────────────────────────────────────────────── 
   Diag                157040.12      3       52346.71    1.1821653    0.3171568   
   Age                 147447.40      1      147447.40    3.3298598    0.0692706   
   sex                  25204.62      1       25204.62    0.5692054    0.4513114   
   bmi                 273820.80      1      273820.80    6.1837974    0.0135706   
   E4_Positive          21477.68      1       21477.68    0.4850384    0.4868201   
   Residuals         1.067157e+7    241       44280.36                             
 ───────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          -39.355753    33.91189    241.0000    -1.1605296       1.0000000   
           -    MCI          -64.423223    39.69954    241.0000    -1.6227701       0.6356755   
           -    DAT          -72.522748    48.77529    241.0000    -1.4868749       0.8301298   
   SCD     -    MCI          -25.067470    37.69944    241.0000    -0.6649295       1.0000000   
           -    DAT          -33.166995    46.49805    241.0000    -0.7132985       1.0000000   
   MCI     -    DAT           -8.099525    49.82922    241.0000    -0.1625457       1.0000000   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(Factor_B_ng_ml, na.rm = TRUE), Std=sd(Factor_B_ng_ml, na.rm = TRUE),
            Max=max(Factor_B_ng_ml, na.rm = TRUE), Min=min(Factor_B_ng_ml, na.rm = TRUE))

4.9. FactorH_Diag

(FH_Diag_plot <- ggplot(DC_thesis_m,
                       aes(x = Diag, y = Factor_H_ng_ml, 
                           colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor H (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))



ancova(formula = Factor_H_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = Factor_H_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_H_ng_ml                                                           
 ───────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p           
 ───────────────────────────────────────────────────────────────────────────────── 
   Diag                 73524.93      3       24508.31    0.8891559    0.4473599   
   Age                  12422.24      1       12422.24    0.4506759    0.5026571   
   sex                 108181.14      1      108181.14    3.9247871    0.0487160   
   bmi                  45003.39      1       45003.39    1.6327126    0.2025577   
   E4_Positive          25799.03      1       25799.03    0.9359828    0.3342830   
   Residuals          6642820.39    241       27563.57                             
 ───────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD           -19.78613    26.75557    241.0000    -0.7395145       1.0000000   
           -    MCI           -40.74155    31.32186    241.0000    -1.3007385       1.0000000   
           -    DAT           -53.73278    38.48238    241.0000    -1.3962956       0.9834614   
   SCD     -    MCI           -20.95542    29.74384    241.0000    -0.7045298       1.0000000   
           -    DAT           -33.94665    36.68571    241.0000    -0.9253372       1.0000000   
   MCI     -    DAT           -12.99123    39.31391    241.0000    -0.3304486       1.0000000   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(Factor_H_ng_ml, na.rm = TRUE), Std=sd(Factor_H_ng_ml, na.rm = TRUE),
            Max=max(Factor_H_ng_ml, na.rm = TRUE), Min=min(Factor_H_ng_ml, na.rm = TRUE))

4.10. MIF_Diag

(MIF_Diag_plot <- ggplot(DC_thesis_m,
                        aes(x = Diag, y = MIF_pg_ml, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "MIF (pg/mL)") +
    scale_y_continuous(breaks = seq(0,30000, by = 5000), limits = c(0, 30000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = MIF_pg_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = MIF_pg_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - MIF_pg_ml                                                                 
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag              1.681487e+7      3        5604956    0.45205857    0.7160750   
   Age               5.235469e+7      1    5.235469e+7    4.22258192    0.0409676   
   sex                   1061769      1        1061769    0.08563529    0.7700529   
   bmi               3.313985e+7      1    3.313985e+7    2.67284039    0.1033792   
   E4_Positive       2.561969e+7      1    2.561969e+7    2.06631473    0.1518821   
   Residuals         2.988096e+9    241    1.239874e+7                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD            132.5595    567.4599    241.0000     0.2336015       1.0000000   
           -    MCI           -524.2356    664.3067    241.0000    -0.7891470       1.0000000   
           -    DAT            258.4743    816.1744    241.0000     0.3166900       1.0000000   
   SCD     -    MCI           -656.7951    630.8383    241.0000    -1.0411465       1.0000000   
           -    DAT            125.9148    778.0687    241.0000     0.1618300       1.0000000   
   MCI     -    DAT            782.7099    833.8103    241.0000     0.9387145       1.0000000   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(MIF_pg_ml, na.rm = TRUE), Std=sd(MIF_pg_ml, na.rm = TRUE),
            Max=max(MIF_pg_ml, na.rm = TRUE), Min=min(MIF_pg_ml, na.rm = TRUE))

4.11. TNFR1_Diag

(TNFR1_Diag_plot <- ggplot(DC_thesis_m,
                          aes(x = Diag, y = TNFR1_ng_mL, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,3, by = 0.5), limits = c(0, 3)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR1_ng_mL ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = TNFR1_ng_mL ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR1_ng_mL                                                               
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag              0.092727695      3    0.030909232    0.60539751    0.6120822   
   Age               0.152850380      1    0.152850380    2.99377352    0.0848653   
   sex               0.004718956      1    0.004718956    0.09242689    0.7613766   
   bmi               0.005622870      1    0.005622870    0.11013121    0.7402832   
   E4_Positive       0.095175902      1    0.095175902    1.86414385    0.1734204   
   Residuals        12.304518468    241    0.051056093                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.01318289    0.03641415    241.0000     0.3620266       1.0000000   
           -    MCI         -0.04022735    0.04262885    241.0000    -0.9436648       1.0000000   
           -    DAT         -0.01616199    0.05237428    241.0000    -0.3085864       1.0000000   
   SCD     -    MCI         -0.05341024    0.04048117    241.0000    -1.3193847       1.0000000   
           -    DAT         -0.02934488    0.04992901    241.0000    -0.5877320       1.0000000   
   MCI     -    DAT          0.02406536    0.05350598    241.0000     0.4497696       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(TNFR1_ng_mL, na.rm = TRUE), Std=sd(TNFR1_ng_mL, na.rm = TRUE),
            Max=max(TNFR1_ng_mL, na.rm = TRUE), Min=min(TNFR1_ng_mL, na.rm = TRUE))

4.12. TNFR2_Diag

(TNFR2_Diag_plot <- ggplot(DC_thesis_m,
                          aes(x = Diag, y = TNFR2_ng_mL, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR2 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,5, by = 1), limits = c(0, 5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR2_ng_mL ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = TNFR2_ng_mL ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR2_ng_mL                                                               
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag               0.30447437      3     0.10149146     0.5701358    0.6351801   
   Age                1.82995478      1     1.82995478    10.2799076    0.0015269   
   sex                0.05130440      1     0.05130440     0.2882063    0.5918675   
   bmi                0.05022237      1     0.05022237     0.2821279    0.5957991   
   E4_Positive        1.14753435      1     1.14753435     6.4463599    0.0117481   
   Residuals         42.90107653    241     0.17801277                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD        -0.009591245    0.06799422    241.0000    -0.1410597       1.0000000   
           -    MCI        -0.088323307    0.07959860    241.0000    -1.1096087       1.0000000   
           -    DAT        -0.075014599    0.09779571    241.0000    -0.7670541       1.0000000   
   SCD     -    MCI        -0.078732062    0.07558835    241.0000    -1.0415899       1.0000000   
           -    DAT        -0.065423354    0.09322980    241.0000    -0.7017429       1.0000000   
   MCI     -    DAT         0.013308708    0.09990889    241.0000     0.1332085       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(TNFR2_ng_mL, na.rm = TRUE), Std=sd(TNFR2_ng_mL, na.rm = TRUE),
            Max=max(TNFR2_ng_mL, na.rm = TRUE), Min=min(TNFR2_ng_mL, na.rm = TRUE))

4.13. ICAM1_Diag

(ICAM1_Diag_plot <- ggplot(DC_thesis_m,
                          aes(x = Diag, y = ICAM1_ng_mL, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "ICAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,20, by = 5), limits = c(0, 20)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = ICAM1_ng_mL ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = ICAM1_ng_mL ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - ICAM1_ng_mL                                                               
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag                9.3118490      3      3.1039497    1.22311958    0.3019160   
   Age                 0.2470919      1      0.2470919    0.09736724    0.7552820   
   sex                 3.2949805      1      3.2949805    1.29839578    0.2556377   
   bmi                 3.0321278      1      3.0321278    1.19481799    0.2754513   
   E4_Positive         2.2527945      1      2.2527945    0.88771963    0.3470395   
   Residuals         611.5934050    241      2.5377320                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD         0.004574037    0.2567257    241.0000     0.01781683       1.0000000   
           -    MCI        -0.450628964    0.3005403    241.0000    -1.49939601       0.8104784   
           -    DAT        -0.401644007    0.3692471    241.0000    -1.08773768       1.0000000   
   SCD     -    MCI        -0.455203001    0.2853988    241.0000    -1.59497153       0.6721748   
           -    DAT        -0.406218044    0.3520076    241.0000    -1.15400353       1.0000000   
   MCI     -    DAT         0.048984957    0.3772258    241.0000     0.12985579       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(ICAM1_ng_mL, na.rm = TRUE), Std=sd(ICAM1_ng_mL, na.rm = TRUE),
            Max=max(ICAM1_ng_mL, na.rm = TRUE), Min=min(ICAM1_ng_mL, na.rm = TRUE))

4.14. VCAM1_Diag

(VCAM1_Diag_plot <- ggplot(DC_thesis_m,
                          aes(x = Diag, y = VCAM1_ng_mL, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "VCAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,40, by = 10), limits = c(0, 40)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = VCAM1_ng_mL ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = VCAM1_ng_mL ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - VCAM1_ng_mL                                                                
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag               6.25139682      3     2.08379894    0.226559302    0.8778681   
   Age               12.68414522      1    12.68414522    1.379073108    0.2414182   
   sex               29.84363657      1    29.84363657    3.244724489    0.0729037   
   bmi                0.02490871      1     0.02490871    0.002708179    0.9585398   
   E4_Positive       20.95405901      1    20.95405901    2.278212585    0.1325129   
   Residuals       2216.61852533    241     9.19758724                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.38981922    0.4887462    241.0000     0.79759028       1.0000000   
           -    MCI          0.15831082    0.5721591    241.0000     0.27669020       1.0000000   
           -    DAT          0.10962157    0.7029609    241.0000     0.15594262       1.0000000   
   SCD     -    MCI         -0.23150839    0.5433332    241.0000    -0.42608915       1.0000000   
           -    DAT         -0.28019764    0.6701409    241.0000    -0.41811748       1.0000000   
   MCI     -    DAT         -0.04868925    0.7181506    241.0000    -0.06779811       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(VCAM1_ng_mL, na.rm = TRUE), Std=sd(VCAM1_ng_mL, na.rm = TRUE),
            Max=max(VCAM1_ng_mL, na.rm = TRUE), Min=min(VCAM1_ng_mL, na.rm = TRUE))
NA

4.15. CRP_Diag

(CRP_Diag_plot <- ggplot(DC_thesis_m,
                        aes(x = Diag, y = CRP_pg_ml, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "CRP (pg/mL)") +
    scale_y_continuous(breaks = seq(0,50000, by = 12500), limits = c(0, 50000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = CRP_pg_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = CRP_pg_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - CRP_pg_ml                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag              2.862652e+8      3    9.542173e+7    2.904676703    0.0354632   
   Age                 341406.12      1      341406.12    0.010392542    0.9188860   
   sex                  85584.19      1       85584.19    0.002605218    0.9593349   
   bmi               1.858878e+8      1    1.858878e+8    5.658500660    0.0181509   
   E4_Positive       2.257763e+7      1    2.257763e+7    0.687272247    0.4079141   
   Residuals         7.917107e+9    241    3.285107e+7                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                     
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE           df          t             p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD           -714.7575     923.6792    241.0000    -0.7738157       1.0000000   
           -    MCI          -2891.3525    1081.3210    241.0000    -2.6739077       0.0480607   
           -    DAT            152.6176    1328.5227    241.0000     0.1148777       1.0000000   
   SCD     -    MCI          -2176.5951    1026.8430    241.0000    -2.1196960       0.2103258   
           -    DAT            867.3751    1266.4964    241.0000     0.6848619       1.0000000   
   MCI     -    DAT           3043.9702    1357.2295    241.0000     2.2427822       0.1549231   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(CRP_pg_ml, na.rm = TRUE), Std=sd(CRP_pg_ml, na.rm = TRUE),
            Max=max(CRP_pg_ml, na.rm = TRUE), Min=min(CRP_pg_ml, na.rm = TRUE))

5. Diagnosis + Tau scheme

5.1. YKL40_Diag_T

(YKL40_diag_T_plot <- ggplot(DC_thesis_m,
                           aes(x = clinical_N_cat, y = YKL40_ng_ml, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
   geom_boxplot() +
   geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
   labs(x = NULL, y = "YKL40 (ng/mL)") +
   scale_y_continuous(breaks = seq(0,1200, by = 200), limits = c(0,1200)) +
   scale_x_discrete(labels = c('CN T-', 'CN T+', "SCD T-", "SCD T+", "MCI T-", "MCI T+",
                               'DAT T-','DAT T+')) +
   scale_colour_manual(values = c("black",'black', "black", "black", 
                                  "black", "black","black", 'black')) +
   scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                "lightgreen", "coral","aquamarine2", 'deeppink')) +
   theme_bw() +
   theme(legend.position = "none",
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank()))


ancova(formula = YKL40_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = YKL40_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - YKL40_ng_ml                                                                   
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        470320.898      7      67188.700     5.3155557     0.0000116   
   Age                   382187.881      1     382187.881    30.2363487    < .0000001   
   sex                     7830.977      1       7830.977     0.6195386     0.4320052   
   bmi                    22115.698      1      22115.698     1.7496577     0.1871947   
   E4_Positive            13943.274      1      13943.274     1.1031058     0.2946553   
   Residuals            2995683.393    237      12640.014                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                  -88.376903    32.25941    237.0000    -2.73956937       0.1853558   
                     -    SCD_T-                  17.844635    19.93727    237.0000     0.89503886       1.0000000   
                     -    SCD_T+                 -87.314258    32.29694    237.0000    -2.70348364       0.2060435   
                     -    MCI_T-                 -11.974748    26.54286    237.0000    -0.45114763       1.0000000   
                     -    MCI_T+                 -93.582554    27.94243    237.0000    -3.34912028       0.0264041   
                     -    DAT_T-                  83.237001    45.75978    237.0000     1.81899928       1.0000000   
                     -    DAT_T+                 -61.142003    29.56598    237.0000    -2.06798512       1.0000000   
   CN_T+             -    SCD_T-                 106.221538    32.65173    237.0000     3.25316760       0.0366107   
                     -    SCD_T+                   1.062645    40.79321    237.0000     0.02604957       1.0000000   
                     -    MCI_T-                  76.402155    36.98550    237.0000     2.06573241       1.0000000   
                     -    MCI_T+                  -5.205651    37.74582    237.0000    -0.13791331       1.0000000   
                     -    DAT_T-                 171.613904    52.42830    237.0000     3.27330648       0.0342046   
                     -    DAT_T+                  27.234900    38.69489    237.0000     0.70383721       1.0000000   
   SCD_T-            -    SCD_T+                -105.158892    31.93702    237.0000    -3.29269602       0.0320277   
                     -    MCI_T-                 -29.819383    25.82160    237.0000    -1.15482299       1.0000000   
                     -    MCI_T+                -111.427188    27.17871    237.0000    -4.09979744       0.0015916   
                     -    DAT_T-                  65.392366    45.07083    237.0000     1.45088012       1.0000000   
                     -    DAT_T+                 -78.986638    28.66581    237.0000    -2.75542995       0.1768727   
   SCD_T+            -    MCI_T-                  75.339509    35.99921    237.0000     2.09281018       1.0000000   
                     -    MCI_T+                  -6.268296    36.53935    237.0000    -0.17154920       1.0000000   
                     -    DAT_T-                 170.551258    51.46383    237.0000     3.31400252       0.0297846   
                     -    DAT_T+                  26.172255    37.20325    237.0000     0.70349378       1.0000000   
   MCI_T-            -    MCI_T+                 -81.607805    31.95467    237.0000    -2.55386126       0.3158608   
                     -    DAT_T-                  95.211749    47.79055    237.0000     1.99227143       1.0000000   
                     -    DAT_T+                 -49.167255    33.86228    237.0000    -1.45197698       1.0000000   
   MCI_T+            -    DAT_T-                 176.819554    48.58696    237.0000     3.63923864       0.0093980   
                     -    DAT_T+                  32.440551    33.09708    237.0000     0.98016346       1.0000000   
   DAT_T-            -    DAT_T+                -144.379003    49.35647    237.0000    -2.92522943       0.1057317   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(YKL40_ng_ml, na.rm = TRUE), Std=sd(YKL40_ng_ml, na.rm = TRUE),
            Max=max(YKL40_ng_ml, na.rm = TRUE), Min=min(YKL40_ng_ml, na.rm = TRUE))
NA

5.2. AXL_Diag_T

(AXL_diag_T_plot <- ggplot(DC_thesis_m,
                         aes(x = clinical_N_cat, y = AXL_ng_ml, 
                             colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "AXL (ng/mL)") +
    scale_y_continuous(breaks = seq(0,50, by = 10), limits = c(0,50)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = AXL_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = AXL_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - AXL_ng_ml                                                                     
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       1206.372689      7     172.338956    8.40755430    < .0000001   
   Age                    10.517162      1      10.517162    0.51307966     0.4745139   
   sex                     1.675020      1       1.675020    0.08171581     0.7752352   
   bmi                    45.601577      1      45.601577    2.22467251     0.1371513   
   E4_Positive            20.478533      1      20.478533    0.99904501     0.3185611   
   Residuals            4858.051587    237      20.498108                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t             p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                  -6.1576191    1.2990910    237.0000    -4.7399443       0.0001033   
                     -    SCD_T-                  1.4713644    0.8028767    237.0000     1.8326155       1.0000000   
                     -    SCD_T+                 -3.7831358    1.3006023    237.0000    -2.9087567       0.1112588   
                     -    MCI_T-                  2.6805786    1.0688846    237.0000     2.5078279       0.3588855   
                     -    MCI_T+                 -1.7550316    1.1252454    237.0000    -1.5596879       1.0000000   
                     -    DAT_T-                  2.9361941    1.8427525    237.0000     1.5933741       1.0000000   
                     -    DAT_T+                 -0.9806632    1.1906260    237.0000    -0.8236534       1.0000000   
   CN_T+             -    SCD_T-                  7.6289835    1.3148895    237.0000     5.8019960       0.0000006   
                     -    SCD_T+                  2.3744833    1.6427480    237.0000     1.4454337       1.0000000   
                     -    MCI_T-                  8.8381977    1.4894113    237.0000     5.9340208       0.0000003   
                     -    MCI_T+                  4.4025875    1.5200292    237.0000     2.8963835       0.1155828   
                     -    DAT_T-                  9.0938132    2.1112949    237.0000     4.3072207       0.0006783   
                     -    DAT_T+                  5.1769560    1.5582483    237.0000     3.3222920       0.0289522   
   SCD_T-            -    SCD_T+                 -5.2545002    1.2861081    237.0000    -4.0855821       0.0016854   
                     -    MCI_T-                  1.2092142    1.0398396    237.0000     1.1628854       1.0000000   
                     -    MCI_T+                 -3.2263960    1.0944902    237.0000    -2.9478528       0.0985497   
                     -    DAT_T-                  1.4648297    1.8150083    237.0000     0.8070650       1.0000000   
                     -    DAT_T+                 -2.4520276    1.1543762    237.0000    -2.1241148       0.9715017   
   SCD_T+            -    MCI_T-                  6.4637144    1.4496930    237.0000     4.4586779       0.0003566   
                     -    MCI_T+                  2.0281042    1.4714445    237.0000     1.3783083       1.0000000   
                     -    DAT_T-                  6.7193299    2.0724554    237.0000     3.2422072       0.0379853   
                     -    DAT_T+                  2.8024726    1.4981799    237.0000     1.8705848       1.0000000   
   MCI_T-            -    MCI_T+                 -4.4356102    1.2868191    237.0000    -3.4469570       0.0187775   
                     -    DAT_T-                  0.2556155    1.9245320    237.0000     0.1328196       1.0000000   
                     -    DAT_T+                 -3.6612418    1.3636388    237.0000    -2.6849059       0.2174873   
   MCI_T+            -    DAT_T-                  4.6912257    1.9566037    237.0000     2.3976372       0.4837310   
                     -    DAT_T+                  0.7743684    1.3328240    237.0000     0.5809983       1.0000000   
   DAT_T-            -    DAT_T+                 -3.9168572    1.9875919    237.0000    -1.9706547       1.0000000   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(AXL_ng_ml, na.rm = TRUE), Std=sd(AXL_ng_ml, na.rm = TRUE),
            Max=max(AXL_ng_ml, na.rm = TRUE), Min=min(AXL_ng_ml, na.rm = TRUE))

5.3. Tyro3_Diag_T

(Tyro3_Diag_T_plot <- ggplot(DC_thesis_m,
                           aes(x = clinical_N_cat, y = Tyro3_pg_ml, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Tyro3 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,10000, by = 1000), limits = c(0,10000)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Tyro3_pg_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = Tyro3_pg_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Tyro3_pg_ml                                                                  
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       8.327400e+7      7    1.189629e+7    9.0301429    < .0000001   
   Age                    4280910.4      1      4280910.4    3.2495213     0.0727147   
   sex                     286891.7      1       286891.7    0.2177716     0.6411718   
   bmi                    1206691.7      1      1206691.7    0.9159665     0.3395115   
   E4_Positive            3426971.6      1      3426971.6    2.6013198     0.1081055   
   Residuals            3.122232e+8    237      1317397.3                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                              
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -1737.42735    329.3374    237.0000    -5.2755237       0.0000084   
                     -    SCD_T-                  249.86216    203.5403    237.0000     1.2275809       1.0000000   
                     -    SCD_T+                 -686.10884    329.7205    237.0000    -2.0808798       1.0000000   
                     -    MCI_T-                  598.47824    270.9769    237.0000     2.2085949       0.7884945   
                     -    MCI_T+                 -608.05948    285.2652    237.0000    -2.1315588       0.9540258   
                     -    DAT_T-                 1303.74065    467.1631    237.0000     2.7907614       0.1592264   
                     -    DAT_T+                   67.59165    301.8400    237.0000     0.2239320       1.0000000   
   CN_T+             -    SCD_T-                 1987.28951    333.3425    237.0000     5.9617039       0.0000003   
                     -    SCD_T+                 1051.31851    416.4592    237.0000     2.5244215       0.3428091   
                     -    MCI_T-                 2335.90559    377.5862    237.0000     6.1864164    < .0000001   
                     -    MCI_T+                 1129.36787    385.3483    237.0000     2.9307718       0.1039292   
                     -    DAT_T-                 3041.16800    535.2423    237.0000     5.6818533       0.0000011   
                     -    DAT_T+                 1805.01900    395.0374    237.0000     4.5692363       0.0002206   
   SCD_T-            -    SCD_T+                 -935.97100    326.0461    237.0000    -2.8706711       0.1250627   
                     -    MCI_T-                  348.61608    263.6136    237.0000     1.3224510       1.0000000   
                     -    MCI_T+                 -857.92164    277.4683    237.0000    -3.0919628       0.0623421   
                     -    DAT_T-                 1053.87849    460.1295    237.0000     2.2903952       0.6405711   
                     -    DAT_T+                 -182.27051    292.6502    237.0000    -0.6228272       1.0000000   
   SCD_T+            -    MCI_T-                 1284.58708    367.5171    237.0000     3.4953125       0.0158214   
                     -    MCI_T+                   78.04936    373.0314    237.0000     0.2092300       1.0000000   
                     -    DAT_T-                 1989.84948    525.3959    237.0000     3.7873334       0.0054059   
                     -    DAT_T+                  753.70048    379.8092    237.0000     1.9844188       1.0000000   
   MCI_T-            -    MCI_T+                -1206.53772    326.2263    237.0000    -3.6984684       0.0075488   
                     -    DAT_T-                  705.26240    487.8953    237.0000     1.4455200       1.0000000   
                     -    DAT_T+                 -530.88660    345.7012    237.0000    -1.5356807       1.0000000   
   MCI_T+            -    DAT_T-                 1911.80013    496.0259    237.0000     3.8542345       0.0041872   
                     -    DAT_T+                  675.65113    337.8892    237.0000     1.9996234       1.0000000   
   DAT_T-            -    DAT_T+                -1236.14900    503.8818    237.0000    -2.4532518       0.4165982   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(Tyro3_pg_ml, na.rm = TRUE), Std=sd(Tyro3_pg_ml, na.rm = TRUE),
            Max=max(Tyro3_pg_ml, na.rm = TRUE), Min=min(Tyro3_pg_ml, na.rm = TRUE))
NA

5.4. TREM2_Diag_T

(TREM2_Diag_T_plot <- ggplot(DC_thesis_m,
                           aes(x = clinical_N_cat, y = TREM2_pg_ml, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TREM2 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,14000, by = 2000), limits = c(0,14000)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TREM2_pg_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = TREM2_pg_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TREM2_pg_ml                                                                   
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       6.740926e+7      7      9629894.5     7.5703877    < .0000001   
   Age                  1.855725e+7      1    1.855725e+7    14.5884855     0.0001708   
   sex                     539198.0      1       539198.0     0.4238819     0.5156371   
   bmi                     427507.6      1       427507.6     0.3360783     0.5626524   
   E4_Positive          3.396967e+7      1    3.396967e+7    26.7047160     0.0000005   
   Residuals            3.014753e+8    237      1272047.7                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                              
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -1271.64044    323.6193    237.0000    -3.9294334       0.0031291   
                     -    SCD_T-                  416.50008    200.0063    237.0000     2.0824347       1.0000000   
                     -    SCD_T+                  112.23878    323.9958    237.0000     0.3464205       1.0000000   
                     -    MCI_T-                  782.82584    266.2721    237.0000     2.9399471       0.1010070   
                     -    MCI_T+                 -528.41708    280.3122    237.0000    -1.8851017       1.0000000   
                     -    DAT_T-                 1181.02923    459.0519    237.0000     2.5727573       0.2995772   
                     -    DAT_T+                 -447.94670    296.5993    237.0000    -1.5102755       1.0000000   
   CN_T+             -    SCD_T-                 1688.14052    327.5549    237.0000     5.1537640       0.0000151   
                     -    SCD_T+                 1383.87922    409.2284    237.0000     3.3816793       0.0235927   
                     -    MCI_T-                 2054.46628    371.0304    237.0000     5.5371916       0.0000023   
                     -    MCI_T+                  743.22336    378.6577    237.0000     1.9627844       1.0000000   
                     -    DAT_T-                 2452.66967    525.9491    237.0000     4.6633213       0.0001456   
                     -    DAT_T+                  823.69374    388.1785    237.0000     2.1219458       0.9766454   
   SCD_T-            -    SCD_T+                 -304.26130    320.3851    237.0000    -0.9496737       1.0000000   
                     -    MCI_T-                  366.32576    259.0366    237.0000     1.4141853       1.0000000   
                     -    MCI_T+                 -944.91716    272.6507    237.0000    -3.4656687       0.0175770   
                     -    DAT_T-                  764.52915    452.1405    237.0000     1.6909104       1.0000000   
                     -    DAT_T+                 -864.44678    287.5691    237.0000    -3.0060492       0.0820789   
   SCD_T+            -    MCI_T-                  670.58706    361.1361    237.0000     1.8568820       1.0000000   
                     -    MCI_T+                 -640.65586    366.5546    237.0000    -1.7477773       1.0000000   
                     -    DAT_T-                 1068.79045    516.2737    237.0000     2.0702012       1.0000000   
                     -    DAT_T+                 -560.18548    373.2147    237.0000    -1.5009736       1.0000000   
   MCI_T-            -    MCI_T+                -1311.24292    320.5622    237.0000    -4.0904476       0.0016527   
                     -    DAT_T-                  398.20339    479.4242    237.0000     0.8305867       1.0000000   
                     -    DAT_T+                -1230.77254    339.6989    237.0000    -3.6231277       0.0099704   
   MCI_T+            -    DAT_T-                 1709.44631    487.4136    237.0000     3.5071778       0.0151658   
                     -    DAT_T+                   80.47038    332.0226    237.0000     0.2423642       1.0000000   
   DAT_T-            -    DAT_T+                -1628.97593    495.1332    237.0000    -3.2899753       0.0323252   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TREM2_pg_ml, na.rm = TRUE), Std=sd(TREM2_pg_ml, na.rm = TRUE),
            Max=max(TREM2_pg_ml, na.rm = TRUE), Min=min(TREM2_pg_ml, na.rm = TRUE))
NA

5.5. C1q_Diag_T

(C1q_Diag_T_plot <- ggplot(DC_thesis_m,
                         aes(x = clinical_N_cat, y = C1q_ng_ml, 
                             colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C1q (ng/mL)") +
    scale_y_continuous(breaks = seq(0,600, by = 100), limits = c(0,600)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C1q_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = C1q_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C1q_ng_ml                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p           
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        61479.1723      7      8782.7389     2.6755863    0.0110400   
   Age                   27467.6097      1     27467.6097     8.3677725    0.0041748   
   sex                   41731.8941      1     41731.8941    12.7132648    0.0004391   
   bmi                     328.5387      1       328.5387     0.1000865    0.7520043   
   E4_Positive             404.7730      1       404.7730     0.1233106    0.7257832   
   Residuals            777963.7325    237      3282.5474                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t               p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -22.72467777    16.43948    237.0000     -1.38232301       1.0000000   
                     -    SCD_T-                10.60142472    10.16009    237.0000      1.04343823       1.0000000   
                     -    SCD_T+               -53.64005028    16.45861    237.0000     -3.25908762       0.0358875   
                     -    MCI_T-                 2.10036197    13.52631    237.0000      0.15527971       1.0000000   
                     -    MCI_T+               -13.93767015    14.23954    237.0000     -0.97880080       1.0000000   
                     -    DAT_T-                 2.07742950    23.31931    237.0000      0.08908625       1.0000000   
                     -    DAT_T+               -15.37347672    15.06690    237.0000     -1.02034754       1.0000000   
   CN_T+             -    SCD_T-                33.32610249    16.63941    237.0000      2.00284186       1.0000000   
                     -    SCD_T+               -30.91537251    20.78833    237.0000     -1.48715050       1.0000000   
                     -    MCI_T-                24.82503974    18.84791    237.0000      1.31712408       1.0000000   
                     -    MCI_T+                 8.78700762    19.23537    237.0000      0.45681510       1.0000000   
                     -    DAT_T-                24.80210727    26.71760    237.0000      0.92830580       1.0000000   
                     -    DAT_T+                 7.35120105    19.71902    237.0000      0.37279752       1.0000000   
   SCD_T-            -    SCD_T+               -64.24147500    16.27519    237.0000     -3.94720261       0.0029191   
                     -    MCI_T-                -8.50106275    13.15876    237.0000     -0.64603831       1.0000000   
                     -    MCI_T+               -24.53909486    13.85034    237.0000     -1.77173208       1.0000000   
                     -    DAT_T-                -8.52399522    22.96821    237.0000     -0.37112137       1.0000000   
                     -    DAT_T+               -25.97490144    14.60818    237.0000     -1.77810718       1.0000000   
   SCD_T+            -    MCI_T-                55.74041225    18.34529    237.0000      3.03840392       0.0740550   
                     -    MCI_T+                39.70238013    18.62055    237.0000      2.13218083       0.9525779   
                     -    DAT_T-                55.71747978    26.22611    237.0000      2.12450448       0.9705801   
                     -    DAT_T+                38.26657356    18.95888    237.0000      2.01839881       1.0000000   
   MCI_T-            -    MCI_T+               -16.03803212    16.28419    237.0000     -0.98488373       1.0000000   
                     -    DAT_T-                -0.02293247    24.35419    237.0000    -9.416231e-4       1.0000000   
                     -    DAT_T+               -17.47383869    17.25631    237.0000     -1.01260571       1.0000000   
   MCI_T+            -    DAT_T-                16.01509965    24.76005    237.0000      0.64681215       1.0000000   
                     -    DAT_T+                -1.43580657    16.86636    237.0000     -0.08512841       1.0000000   
   DAT_T-            -    DAT_T+               -17.45090622    25.15219    237.0000     -0.69381256       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(C1q_ng_ml, na.rm = TRUE), Std=sd(C1q_ng_ml, na.rm = TRUE),
            Max=max(C1q_ng_ml, na.rm = TRUE), Min=min(C1q_ng_ml, na.rm = TRUE))

5.6. C3_Diag_T

(C3_Diag_T_plot <- ggplot(DC_thesis_m,
                        aes(x = clinical_N_cat, y = C3_ng_ml, 
                            colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C3 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,5000, by = 500), limits = c(0, 5000)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C3_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = C3_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C3_ng_ml                                                                    
 ──────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         1865439.6      7       266491.4    0.5512185    0.7948893   
   Age                     498760.2      1       498760.2    1.0316500    0.3108072   
   sex                     890439.0      1       890439.0    1.8418098    0.1760300   
   bmi                    1234212.8      1      1234212.8    2.5528815    0.1114257   
   E4_Positive             100049.7      1       100049.7    0.2069457    0.6495884   
   Residuals            1.145797e+8    237       483458.7                             
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -164.479215    199.5090    237.0000    -0.82442021       1.0000000   
                     -    SCD_T-                 -92.432180    123.3024    237.0000    -0.74963786       1.0000000   
                     -    SCD_T+                   5.285473    199.7411    237.0000     0.02646163       1.0000000   
                     -    MCI_T-                -204.080902    164.1548    237.0000    -1.24322216       1.0000000   
                     -    MCI_T+                 -81.177746    172.8105    237.0000    -0.46975015       1.0000000   
                     -    DAT_T-                -361.399822    283.0022    237.0000    -1.27702125       1.0000000   
                     -    DAT_T+                -218.813102    182.8513    237.0000    -1.19667207       1.0000000   
   CN_T+             -    SCD_T-                  72.047034    201.9352    237.0000     0.35678291       1.0000000   
                     -    SCD_T+                 169.764688    252.2864    237.0000     0.67290476       1.0000000   
                     -    MCI_T-                 -39.601687    228.7375    237.0000    -0.17313156       1.0000000   
                     -    MCI_T+                  83.301469    233.4397    237.0000     0.35684360       1.0000000   
                     -    DAT_T-                -196.920608    324.2438    237.0000    -0.60732261       1.0000000   
                     -    DAT_T+                 -54.333888    239.3092    237.0000    -0.22704466       1.0000000   
   SCD_T-            -    SCD_T+                  97.717653    197.5151    237.0000     0.49473513       1.0000000   
                     -    MCI_T-                -111.648721    159.6942    237.0000    -0.69914074       1.0000000   
                     -    MCI_T+                  11.254434    168.0872    237.0000     0.06695592       1.0000000   
                     -    DAT_T-                -268.967642    278.7414    237.0000    -0.96493620       1.0000000   
                     -    DAT_T+                -126.380922    177.2843    237.0000    -0.71287166       1.0000000   
   SCD_T+            -    MCI_T-                -209.366375    222.6378    237.0000    -0.94039014       1.0000000   
                     -    MCI_T+                 -86.463219    225.9783    237.0000    -0.38261738       1.0000000   
                     -    DAT_T-                -366.685295    318.2790    237.0000    -1.15208756       1.0000000   
                     -    DAT_T+                -224.098575    230.0842    237.0000    -0.97398508       1.0000000   
   MCI_T-            -    MCI_T+                 122.903156    197.6243    237.0000     0.62190310       1.0000000   
                     -    DAT_T-                -157.318921    295.5616    237.0000    -0.53227125       1.0000000   
                     -    DAT_T+                 -14.732201    209.4219    237.0000    -0.07034698       1.0000000   
   MCI_T+            -    DAT_T-                -280.222076    300.4870    237.0000    -0.93255977       1.0000000   
                     -    DAT_T+                -137.635356    204.6895    237.0000    -0.67241034       1.0000000   
   DAT_T-            -    DAT_T+                 142.586720    305.2460    237.0000     0.46712064       1.0000000   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(C3_ng_ml, na.rm = TRUE), Std=sd(C3_ng_ml, na.rm = TRUE),
            Max=max(C3_ng_ml, na.rm = TRUE), Min=min(C3_ng_ml, na.rm = TRUE))

5.7. C4_Diag_T

(C4_Diag_T_plot <- ggplot(DC_thesis_m,
                        aes(x = clinical_N_cat, y = C4_ng_ml, 
                            colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C4 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C4_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = C4_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C4_ng_ml                                                                   
 ─────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F           p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         316562.98      7       45223.28    1.247260    0.2777083   
   Age                     48632.08      1       48632.08    1.341275    0.2479749   
   sex                     58051.09      1       58051.09    1.601052    0.2069968   
   bmi                     94018.38      1       94018.38    2.593032    0.1086658   
   E4_Positive             39001.37      1       39001.37    1.075660    0.3007276   
   Residuals             8593167.35    237       36258.09                            
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -103.0116418    54.63679    237.0000    -1.88538980       1.0000000   
                     -    SCD_T-                -25.7923252    33.76715    237.0000    -0.76382883       1.0000000   
                     -    SCD_T+                -67.0020054    54.70035    237.0000    -1.22489173       1.0000000   
                     -    MCI_T-                -39.2395324    44.95483    237.0000    -0.87286572       1.0000000   
                     -    MCI_T+                -91.1896742    47.32524    237.0000    -1.92687188       1.0000000   
                     -    DAT_T-               -100.7053384    77.50194    237.0000    -1.29939119       1.0000000   
                     -    DAT_T+               -102.1153983    50.07500    237.0000    -2.03924922       1.0000000   
   CN_T+             -    SCD_T-                 77.2193167    55.30123    237.0000     1.39633984       1.0000000   
                     -    SCD_T+                 36.0096365    69.09021    237.0000     0.52119737       1.0000000   
                     -    MCI_T-                 63.7721095    62.64122    237.0000     1.01805340       1.0000000   
                     -    MCI_T+                 11.8219676    63.92894    237.0000     0.18492356       1.0000000   
                     -    DAT_T-                  2.3063034    88.79622    237.0000     0.02597299       1.0000000   
                     -    DAT_T+                  0.8962435    65.53635    237.0000     0.01367552       1.0000000   
   SCD_T-            -    SCD_T+                -41.2096802    54.09076    237.0000    -0.76186180       1.0000000   
                     -    MCI_T-                -13.4472072    43.73327    237.0000    -0.30748235       1.0000000   
                     -    MCI_T+                -65.3973490    46.03175    237.0000    -1.42070103       1.0000000   
                     -    DAT_T-                -74.9130132    76.33509    237.0000    -0.98137066       1.0000000   
                     -    DAT_T+                -76.3230731    48.55041    237.0000    -1.57203756       1.0000000   
   SCD_T+            -    MCI_T-                 27.7624730    60.97076    237.0000     0.45534075       1.0000000   
                     -    MCI_T+                -24.1876688    61.88558    237.0000    -0.39084499       1.0000000   
                     -    DAT_T-                -33.7033330    87.16272    237.0000    -0.38667143       1.0000000   
                     -    DAT_T+                -35.1133929    63.01001    237.0000    -0.55726689       1.0000000   
   MCI_T-            -    MCI_T+                -51.9501419    54.12066    237.0000    -0.95989485       1.0000000   
                     -    DAT_T-                -61.4658060    80.94140    237.0000    -0.75938649       1.0000000   
                     -    DAT_T+                -62.8758660    57.35152    237.0000    -1.09632438       1.0000000   
   MCI_T+            -    DAT_T-                 -9.5156642    82.29026    237.0000    -0.11563536       1.0000000   
                     -    DAT_T+                -10.9257241    56.05552    237.0000    -0.19490898       1.0000000   
   DAT_T-            -    DAT_T+                 -1.4100599    83.59355    237.0000    -0.01686805       1.0000000   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(C4_ng_ml, na.rm = TRUE), Std=sd(C4_ng_ml, na.rm = TRUE),
            Max=max(C4_ng_ml, na.rm = TRUE), Min=min(C4_ng_ml, na.rm = TRUE))

5.8. FactorB_Diag_T

(FB_Diag_T_plot <- ggplot(DC_thesis_m,
                        aes(x = clinical_N_cat, y = Factor_B_ng_ml, 
                            colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor B (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Factor_B_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = Factor_B_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_B_ng_ml                                                              
 ──────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         253580.44      7       36225.78    0.8118664    0.5781757   
   Age                    150781.90      1      150781.90    3.3792170    0.0672749   
   sex                     14109.61      1       14109.61    0.3162145    0.5744230   
   bmi                    302360.25      1      302360.25    6.7762831    0.0098205   
   E4_Positive             17781.16      1       17781.16    0.3984987    0.5284739   
   Residuals            1.057503e+7    237       44620.37                             
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                  -79.927352    60.61070    237.0000    -1.31870046       1.0000000   
                     -    SCD_T-                 -47.348458    37.45921    237.0000    -1.26400061       1.0000000   
                     -    SCD_T+                 -82.430124    60.68121    237.0000    -1.35841272       1.0000000   
                     -    MCI_T-                 -87.943777    49.87013    237.0000    -1.76345594       1.0000000   
                     -    MCI_T+                 -70.206046    52.49971    237.0000    -1.33726530       1.0000000   
                     -    DAT_T-                 -96.819433    85.97589    237.0000    -1.12612305       1.0000000   
                     -    DAT_T+                 -85.629890    55.55013    237.0000    -1.54148869       1.0000000   
   CN_T+             -    SCD_T-                  32.578894    61.34779    237.0000     0.53105243       1.0000000   
                     -    SCD_T+                  -2.502771    76.64444    237.0000    -0.03265431       1.0000000   
                     -    MCI_T-                  -8.016424    69.49032    237.0000    -0.11536030       1.0000000   
                     -    MCI_T+                   9.721307    70.91884    237.0000     0.13707651       1.0000000   
                     -    DAT_T-                 -16.892081    98.50507    237.0000    -0.17148438       1.0000000   
                     -    DAT_T+                  -5.702537    72.70200    237.0000    -0.07843715       1.0000000   
   SCD_T-            -    SCD_T+                 -35.081665    60.00496    237.0000    -0.58464609       1.0000000   
                     -    MCI_T-                 -40.595318    48.51500    237.0000    -0.83675811       1.0000000   
                     -    MCI_T+                 -22.857587    51.06479    237.0000    -0.44761932       1.0000000   
                     -    DAT_T-                 -49.470975    84.68145    237.0000    -0.58420082       1.0000000   
                     -    DAT_T+                 -38.281431    53.85885    237.0000    -0.71077333       1.0000000   
   SCD_T+            -    MCI_T-                  -5.513653    67.63722    237.0000    -0.08151803       1.0000000   
                     -    MCI_T+                  12.224078    68.65206    237.0000     0.17805843       1.0000000   
                     -    DAT_T-                 -14.389310    96.69297    237.0000    -0.14881444       1.0000000   
                     -    DAT_T+                  -3.199766    69.89944    237.0000    -0.04577671       1.0000000   
   MCI_T-            -    MCI_T+                  17.737731    60.03813    237.0000     0.29544108       1.0000000   
                     -    DAT_T-                  -8.875657    89.79142    237.0000    -0.09884749       1.0000000   
                     -    DAT_T+                   2.313887    63.62225    237.0000     0.03636915       1.0000000   
   MCI_T+            -    DAT_T-                 -26.613388    91.28776    237.0000    -0.29153293       1.0000000   
                     -    DAT_T+                 -15.423844    62.18455    237.0000    -0.24803338       1.0000000   
   DAT_T-            -    DAT_T+                  11.189544    92.73355    237.0000     0.12066338       1.0000000   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(Factor_B_ng_ml, na.rm = TRUE), Std=sd(Factor_B_ng_ml, na.rm = TRUE),
            Max=max(Factor_B_ng_ml, na.rm = TRUE), Min=min(Factor_B_ng_ml, na.rm = TRUE))

5.9. FactorH_Diag_T

(FH_Diag_T_plot <- ggplot(DC_thesis_m,
                        aes(x = clinical_N_cat, y = Factor_H_ng_ml, 
                            colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor H (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))



ancova(formula = Factor_H_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = Factor_H_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_H_ng_ml                                                              
 ──────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        249103.633      7      35586.233    1.3041011    0.2490024   
   Age                    11050.618      1      11050.618    0.4049634    0.5251511   
   sex                    85340.020      1      85340.020    3.1273897    0.0782733   
   bmi                    83663.299      1      83663.299    3.0659442    0.0812425   
   E4_Positive             8944.249      1       8944.249    0.3277730    0.5675161   
   Residuals            6467241.685    237      27287.940                             
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                  -64.874419    47.39888    237.0000    -1.36869102       1.0000000   
                     -    SCD_T-                 -13.551811    29.29391    237.0000    -0.46261529       1.0000000   
                     -    SCD_T+                -109.860784    47.45402    237.0000    -2.31509962       0.6009531   
                     -    MCI_T-                 -47.590290    38.99952    237.0000    -1.22027877       1.0000000   
                     -    MCI_T+                 -60.429575    41.05591    237.0000    -1.47188475       1.0000000   
                     -    DAT_T-                 -31.158585    67.23501    237.0000    -0.46342796       1.0000000   
                     -    DAT_T+                 -82.451040    43.44140    237.0000    -1.89798290       1.0000000   
   CN_T+             -    SCD_T-                  51.322608    47.97530    237.0000     1.06977140       1.0000000   
                     -    SCD_T+                 -44.986364    59.93761    237.0000    -0.75055317       1.0000000   
                     -    MCI_T-                  17.284129    54.34294    237.0000     0.31805657       1.0000000   
                     -    MCI_T+                   4.444844    55.46007    237.0000     0.08014494       1.0000000   
                     -    DAT_T-                  33.715835    77.03310    237.0000     0.43767982       1.0000000   
                     -    DAT_T+                 -17.576621    56.85454    237.0000    -0.30915069       1.0000000   
   SCD_T-            -    SCD_T+                 -96.308972    46.92518    237.0000    -2.05239428       1.0000000   
                     -    MCI_T-                 -34.038479    37.93978    237.0000    -0.89717120       1.0000000   
                     -    MCI_T+                 -46.877764    39.93377    237.0000    -1.17388763       1.0000000   
                     -    DAT_T-                 -17.606773    66.22273    237.0000    -0.26587204       1.0000000   
                     -    DAT_T+                 -68.899229    42.11879    237.0000    -1.63583132       1.0000000   
   SCD_T+            -    MCI_T-                  62.270494    52.89377    237.0000     1.17727459       1.0000000   
                     -    MCI_T+                  49.431209    53.68740    237.0000     0.92072270       1.0000000   
                     -    DAT_T-                  78.702199    75.61600    237.0000     1.04081414       1.0000000   
                     -    DAT_T+                  27.409744    54.66287    237.0000     0.50143254       1.0000000   
   MCI_T-            -    MCI_T+                 -12.839285    46.95112    237.0000    -0.27346066       1.0000000   
                     -    DAT_T-                  16.431705    70.21884    237.0000     0.23400709       1.0000000   
                     -    DAT_T+                 -34.860750    49.75398    237.0000    -0.70066255       1.0000000   
   MCI_T+            -    DAT_T-                  29.270991    71.38901    237.0000     0.41002098       1.0000000   
                     -    DAT_T+                 -22.021465    48.62967    237.0000    -0.45284013       1.0000000   
   DAT_T-            -    DAT_T+                 -51.292455    72.51965    237.0000    -0.70729045       1.0000000   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(Factor_H_ng_ml, na.rm = TRUE), Std=sd(Factor_H_ng_ml, na.rm = TRUE),
            Max=max(Factor_H_ng_ml, na.rm = TRUE), Min=min(Factor_H_ng_ml, na.rm = TRUE))

5.10. MIF_Diag_T

(MIF_Diag_T_plot <- ggplot(DC_thesis_m,
                         aes(x = clinical_N_cat, y = MIF_pg_ml, 
                             colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "MIF (pg/mL)") +
    scale_y_continuous(breaks = seq(0,30000, by = 5000), limits = c(0, 30000)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = MIF_pg_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = MIF_pg_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - MIF_pg_ml                                                                      
 ─────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F              p            
 ─────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       5.926025e+8      7    8.465750e+7     8.31727399    < .0000001   
   Age                  4.681935e+7      1    4.681935e+7     4.59982088     0.0329925   
   sex                   967884.763      1     967884.763     0.09509096     0.7580730   
   bmi                   708084.019      1     708084.019     0.06956653     0.7921981   
   E4_Positive             6323.295      1       6323.295    6.212394e-4     0.9801360   
   Residuals            2.412308e+9    237    1.017852e+7                                
 ─────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -3282.11706     915.4295    237.0000    -3.58533018       0.0114446   
                     -    SCD_T-                  334.62461     565.7626    237.0000     0.59145769       1.0000000   
                     -    SCD_T+                -3967.68387     916.4945    237.0000    -4.32919560       0.0006185   
                     -    MCI_T-                  350.92958     753.2101    237.0000     0.46591194       1.0000000   
                     -    MCI_T+                -2887.87124     792.9259    237.0000    -3.64204449       0.0093016   
                     -    DAT_T-                 2938.85376    1298.5310    237.0000     2.26321413       0.6867816   
                     -    DAT_T+                -1830.24165     838.9975    237.0000    -2.18146248       0.8437090   
   CN_T+             -    SCD_T-                 3616.74167     926.5622    237.0000     3.90339868       0.0034629   
                     -    SCD_T+                 -685.56681    1157.5940    237.0000    -0.59223423       1.0000000   
                     -    MCI_T-                 3633.04664    1049.5424    237.0000     3.46155308       0.0178347   
                     -    MCI_T+                  394.24582    1071.1179    237.0000     0.36806950       1.0000000   
                     -    DAT_T-                 6220.97082    1487.7646    237.0000     4.18142133       0.0011422   
                     -    DAT_T+                 1451.87541    1098.0497    237.0000     1.32223105       1.0000000   
   SCD_T-            -    SCD_T+                -4302.30848     906.2808    237.0000    -4.74721333       0.0001000   
                     -    MCI_T-                   16.30497     732.7430    237.0000     0.02225196       1.0000000   
                     -    MCI_T+                -3222.49585     771.2536    237.0000    -4.17825712       0.0011571   
                     -    DAT_T-                 2604.22914    1278.9806    237.0000     2.03617566       1.0000000   
                     -    DAT_T+                -2164.86626     813.4534    237.0000    -2.66132790       0.2328352   
   SCD_T+            -    MCI_T-                 4318.61345    1021.5541    237.0000     4.22749352       0.0009451   
                     -    MCI_T+                 1079.81263    1036.8817    237.0000     1.04140385       1.0000000   
                     -    DAT_T-                 6906.53762    1460.3956    237.0000     4.72922368       0.0001084   
                     -    DAT_T+                 2137.44222    1055.7214    237.0000     2.02462723       1.0000000   
   MCI_T-            -    MCI_T+                -3238.80082     906.7819    237.0000    -3.57175292       0.0120224   
                     -    DAT_T-                 2587.92417    1356.1586    237.0000     1.90827552       1.0000000   
                     -    DAT_T+                -2181.17123     960.9143    237.0000    -2.26989149       0.6751679   
   MCI_T+            -    DAT_T-                 5826.72500    1378.7585    237.0000     4.22606654       0.0009507   
                     -    DAT_T+                 1057.62959     939.2001    237.0000     1.12609609       1.0000000   
   DAT_T-            -    DAT_T+                -4769.09540    1400.5949    237.0000    -3.40504983       0.0217497   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(MIF_pg_ml, na.rm = TRUE), Std=sd(MIF_pg_ml, na.rm = TRUE),
            Max=max(MIF_pg_ml, na.rm = TRUE), Min=min(MIF_pg_ml, na.rm = TRUE))
NA

5.11. TNFR1_Diag_T

(TNFR1_Diag_T_plot <- ggplot(DC_thesis_m,
                           aes(x = clinical_N_cat, y = TNFR1_ng_mL, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,3, by = 0.5), limits = c(0, 3)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR1_ng_mL ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = TNFR1_ng_mL ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR1_ng_mL                                                                   
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F              p           
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        1.89190075      7     0.27027154     6.09731059    0.0000015   
   Age                   0.13812558      1     0.13812558     3.11610539    0.0788096   
   sex                  5.874071e-4      1    5.874071e-4     0.01325187    0.9084500   
   bmi                   0.03331314      1     0.03331314     0.75154255    0.3868651   
   E4_Positive          4.959662e-8      1    4.959662e-8    1.118897e-6    0.9991569   
   Residuals            10.50534542    237     0.04432635                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -0.112821794    0.06041068    237.0000    -1.8675804       1.0000000   
                     -    SCD_T-                0.035230646    0.03733559    237.0000     0.9436211       1.0000000   
                     -    SCD_T+               -0.194149049    0.06048095    237.0000    -3.2100858       0.0422946   
                     -    MCI_T-                0.040976298    0.04970555    237.0000     0.8243807       1.0000000   
                     -    MCI_T+               -0.180594652    0.05232646    237.0000    -3.4513065       0.0184918   
                     -    DAT_T-                0.176306285    0.08569216    237.0000     2.0574377       1.0000000   
                     -    DAT_T+               -0.130506416    0.05536681    237.0000    -2.3571238       0.5384776   
   CN_T+             -    SCD_T-                0.148052439    0.06114534    237.0000     2.4213201       0.4540559   
                     -    SCD_T+               -0.081327255    0.07639150    237.0000    -1.0646113       1.0000000   
                     -    MCI_T-                0.153798091    0.06926100    237.0000     2.2205583       0.7651620   
                     -    MCI_T+               -0.067772859    0.07068480    237.0000    -0.9588038       1.0000000   
                     -    DAT_T-                0.289128079    0.09818000    237.0000     2.9448777       0.0994680   
                     -    DAT_T+               -0.017684623    0.07246208    237.0000    -0.2440535       1.0000000   
   SCD_T-            -    SCD_T+               -0.229379695    0.05980694    237.0000    -3.8353358       0.0045022   
                     -    MCI_T-                0.005745652    0.04835489    237.0000     0.1188225       1.0000000   
                     -    MCI_T+               -0.215825298    0.05089627    237.0000    -4.2404931       0.0008956   
                     -    DAT_T-                0.141075639    0.08440200    237.0000     1.6714727       1.0000000   
                     -    DAT_T+               -0.165737062    0.05368111    237.0000    -3.0874375       0.0632613   
   SCD_T+            -    MCI_T-                0.235125347    0.06741401    237.0000     3.4877816       0.0162511   
                     -    MCI_T+                0.013554397    0.06842550    237.0000     0.1980898       1.0000000   
                     -    DAT_T-                0.370455334    0.09637387    237.0000     3.8439395       0.0043561   
                     -    DAT_T+                0.063642633    0.06966876    237.0000     0.9135031       1.0000000   
   MCI_T-            -    MCI_T+               -0.221570950    0.05984000    237.0000    -3.7027229       0.0074302   
                     -    DAT_T-                0.135329988    0.08949510    237.0000     1.5121497       1.0000000   
                     -    DAT_T+               -0.171482714    0.06341229    237.0000    -2.7042504       0.2055830   
   MCI_T+            -    DAT_T-                0.356900937    0.09098650    237.0000     3.9225702       0.0032140   
                     -    DAT_T+                0.050088236    0.06197934    237.0000     0.8081441       1.0000000   
   DAT_T-            -    DAT_T+               -0.306812702    0.09242752    237.0000    -3.3194950       0.0292306   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TNFR1_ng_mL, na.rm = TRUE), Std=sd(TNFR1_ng_mL, na.rm = TRUE),
            Max=max(TNFR1_ng_mL, na.rm = TRUE), Min=min(TNFR1_ng_mL, na.rm = TRUE))

5.12. TNFR2_Diag_T

(TNFR2_Diag_T_plot <- ggplot(DC_thesis_m,
                           aes(x = clinical_N_cat, y = TNFR2_ng_mL, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR2 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,5, by = 1), limits = c(0, 5)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR2_ng_mL ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = TNFR2_ng_mL ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR2_ng_mL                                                                  
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p           
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        5.38307453      7     0.76901065     4.8187094    0.0000430   
   Age                   1.72842487      1     1.72842487    10.8305096    0.0011506   
   sex                   0.09802654      1     0.09802654     0.6142456    0.4339763   
   bmi                   0.04113729      1     0.04113729     0.2577710    0.6121278   
   E4_Positive           0.28739366      1     0.28739366     1.8008418    0.1808950   
   Residuals            37.82247638    237     0.15958851                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -0.19374397    0.11462610    237.0000    -1.69022563       1.0000000   
                     -    SCD_T-                 0.02144822    0.07084232    237.0000     0.30276003       1.0000000   
                     -    SCD_T+                -0.33706850    0.11475945    237.0000    -2.93717430       0.1018821   
                     -    MCI_T-                 0.06693815    0.09431369    237.0000     0.70973950       1.0000000   
                     -    MCI_T+                -0.34736954    0.09928672    237.0000    -3.49865053       0.0156343   
                     -    DAT_T-                 0.21980007    0.16259640    237.0000     1.35181391       1.0000000   
                     -    DAT_T+                -0.26031693    0.10505562    237.0000    -2.47789635       0.3895890   
   CN_T+             -    SCD_T-                 0.21519219    0.11602008    237.0000     1.85478397       1.0000000   
                     -    SCD_T+                -0.14332453    0.14494888    237.0000    -0.98879364       1.0000000   
                     -    MCI_T-                 0.26068212    0.13141912    237.0000     1.98359347       1.0000000   
                     -    MCI_T+                -0.15362557    0.13412071    237.0000    -1.14542766       1.0000000   
                     -    DAT_T-                 0.41354404    0.18629141    237.0000     2.21987714       0.7664743   
                     -    DAT_T+                -0.06657296    0.13749300    237.0000    -0.48419165       1.0000000   
   SCD_T-            -    SCD_T+                -0.35851672    0.11348054    237.0000    -3.15927934       0.0500451   
                     -    MCI_T-                 0.04548993    0.09175088    237.0000     0.49579824       1.0000000   
                     -    MCI_T+                -0.36881776    0.09657302    237.0000    -3.81905607       0.0047913   
                     -    DAT_T-                 0.19835185    0.16014838    237.0000     1.23855047       1.0000000   
                     -    DAT_T+                -0.28176515    0.10185709    237.0000    -2.76627916       0.1712742   
   SCD_T+            -    MCI_T-                 0.40400665    0.12791456    237.0000     3.15841023       0.0501884   
                     -    MCI_T+                -0.01030104    0.12983381    237.0000    -0.07934022       1.0000000   
                     -    DAT_T-                 0.55686857    0.18286438    237.0000     3.04525447       0.0724514   
                     -    DAT_T+                 0.07675157    0.13219283    237.0000     0.58060311       1.0000000   
   MCI_T-            -    MCI_T+                -0.41430769    0.11354328    237.0000    -3.64889674       0.0090699   
                     -    DAT_T-                 0.15286192    0.16981227    237.0000     0.90018186       1.0000000   
                     -    DAT_T+                -0.32725508    0.12032150    237.0000    -2.71983866       0.1964218   
   MCI_T+            -    DAT_T-                 0.56716961    0.17264213    237.0000     3.28523298       0.0328499   
                     -    DAT_T+                 0.08705261    0.11760255    237.0000     0.74022725       1.0000000   
   DAT_T-            -    DAT_T+                -0.48011700    0.17537639    237.0000    -2.73763759       0.1864138   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TNFR2_ng_mL, na.rm = TRUE), Std=sd(TNFR2_ng_mL, na.rm = TRUE),
            Max=max(TNFR2_ng_mL, na.rm = TRUE), Min=min(TNFR2_ng_mL, na.rm = TRUE))

5.13. ICAM1_Diag_T

(ICAM1_Diag_T_plot <- ggplot(DC_thesis_m,
                           aes(x = clinical_N_cat, y = ICAM1_ng_mL, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "ICAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,20, by = 5), limits = c(0, 20)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = ICAM1_ng_mL ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = ICAM1_ng_mL ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - ICAM1_ng_mL                                                                  
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p           
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       40.02622617      7     5.71803231    2.33297054    0.0255041   
   Age                   0.20714401      1     0.20714401    0.08451524    0.7715235   
   sex                   4.52168938      1     4.52168938    1.84485983    0.1756739   
   bmi                   7.11782822      1     7.11782822    2.90409054    0.0896657   
   E4_Positive           0.03046659      1     0.03046659    0.01243044    0.9113207   
   Residuals           580.87902777    237     2.45096636                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t             p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -0.22645109    0.4492120    237.0000    -0.5041074       1.0000000   
                     -    SCD_T-                 0.11468180    0.2776263    237.0000     0.4130797       1.0000000   
                     -    SCD_T+                -0.69896626    0.4497346    237.0000    -1.5541749       1.0000000   
                     -    MCI_T-                -0.05946476    0.3696091    237.0000    -0.1608856       1.0000000   
                     -    MCI_T+                -0.99180294    0.3890980    237.0000    -2.5489796       0.3201942   
                     -    DAT_T-                 0.67383456    0.6372044    237.0000     1.0574857       1.0000000   
                     -    DAT_T+                -0.89949484    0.4117060    237.0000    -2.1847992       0.8367431   
   CN_T+             -    SCD_T-                 0.34113289    0.4546750    237.0000     0.7502786       1.0000000   
                     -    SCD_T+                -0.47251517    0.5680450    237.0000    -0.8318270       1.0000000   
                     -    MCI_T-                 0.16698633    0.5150228    237.0000     0.3242310       1.0000000   
                     -    MCI_T+                -0.76535185    0.5256101    237.0000    -1.4561208       1.0000000   
                     -    DAT_T-                 0.90028565    0.7300636    237.0000     1.2331606       1.0000000   
                     -    DAT_T+                -0.67304375    0.5388259    237.0000    -1.2490932       1.0000000   
   SCD_T-            -    SCD_T+                -0.81364806    0.4447227    237.0000    -1.8295629       1.0000000   
                     -    MCI_T-                -0.17414656    0.3595656    237.0000    -0.4843249       1.0000000   
                     -    MCI_T+                -1.10648474    0.3784632    237.0000    -2.9236257       0.1062585   
                     -    DAT_T-                 0.55915276    0.6276108    237.0000     0.8909228       1.0000000   
                     -    DAT_T+                -1.01417665    0.3991711    237.0000    -2.5407063       0.3276594   
   SCD_T+            -    MCI_T-                 0.63950150    0.5012886    237.0000     1.2757152       1.0000000   
                     -    MCI_T+                -0.29283668    0.5088101    237.0000    -0.5755324       1.0000000   
                     -    DAT_T-                 1.37280082    0.7166333    237.0000     1.9156252       1.0000000   
                     -    DAT_T+                -0.20052859    0.5180549    237.0000    -0.3870798       1.0000000   
   MCI_T-            -    MCI_T+                -0.93233818    0.4449685    237.0000    -2.0952902       1.0000000   
                     -    DAT_T-                 0.73329932    0.6654829    237.0000     1.1019055       1.0000000   
                     -    DAT_T+                -0.84003008    0.4715319    237.0000    -1.7814913       1.0000000   
   MCI_T+            -    DAT_T-                 1.66563750    0.6765730    237.0000     2.4618741       0.4069653   
                     -    DAT_T+                 0.09230810    0.4608765    237.0000     0.2002881       1.0000000   
   DAT_T-            -    DAT_T+                -1.57332940    0.6872884    237.0000    -2.2891838       0.6425713   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(ICAM1_ng_mL, na.rm = TRUE), Std=sd(ICAM1_ng_mL, na.rm = TRUE),
            Max=max(ICAM1_ng_mL, na.rm = TRUE), Min=min(ICAM1_ng_mL, na.rm = TRUE))

5.14. VCAM1_Diag_T

(VCAM1_Diag_T_plot <- ggplot(DC_thesis_m,
                           aes(x = clinical_N_cat, y = VCAM1_ng_mL, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "VCAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,40, by = 10), limits = c(0, 40)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = VCAM1_ng_mL ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = VCAM1_ng_mL ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - VCAM1_ng_mL                                                                 
 ──────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        136.667047      7      19.523864    2.2179797    0.0335701   
   Age                    12.082916      1      12.082916    1.3726618    0.2425316   
   sex                    35.499213      1      35.499213    4.0328357    0.0457577   
   bmi                     4.532649      1       4.532649    0.5149249    0.4737213   
   E4_Positive             3.575452      1       3.575452    0.4061839    0.5245280   
   Residuals            2086.202875    237       8.802544                             
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t               p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -0.147772989    0.8513081    237.0000    -0.173583430       1.0000000   
                     -    SCD_T-                0.729271803    0.5261337    237.0000     1.386096090       1.0000000   
                     -    SCD_T+               -1.234155778    0.8522985    237.0000    -1.448032291       1.0000000   
                     -    MCI_T-                0.951317378    0.7004514    237.0000     1.358148970       1.0000000   
                     -    MCI_T+               -0.823264787    0.7373853    237.0000    -1.116464917       1.0000000   
                     -    DAT_T-                2.281165620    1.2075753    237.0000     1.889046323       1.0000000   
                     -    DAT_T+               -0.821064804    0.7802299    237.0000    -1.052337071       1.0000000   
   CN_T+             -    SCD_T-                0.877044792    0.8616610    237.0000     1.017853595       1.0000000   
                     -    SCD_T+               -1.086382790    1.0765102    237.0000    -1.009170902       1.0000000   
                     -    MCI_T-                1.099090366    0.9760271    237.0000     1.126085958       1.0000000   
                     -    MCI_T+               -0.675491799    0.9960913    237.0000    -0.678142459       1.0000000   
                     -    DAT_T-                2.428938609    1.3835540    237.0000     1.755579190       1.0000000   
                     -    DAT_T+               -0.673291815    1.0211367    237.0000    -0.659355229       1.0000000   
   SCD_T-            -    SCD_T+               -1.963427582    0.8428003    237.0000    -2.329647481       0.5786415   
                     -    MCI_T-                0.222045574    0.6814179    237.0000     0.325858142       1.0000000   
                     -    MCI_T+               -1.552536591    0.7172311    237.0000    -2.164625445       0.8796281   
                     -    DAT_T-                1.551893817    1.1893942    237.0000     1.304776629       1.0000000   
                     -    DAT_T+               -1.550336607    0.7564750    237.0000    -2.049422199       1.0000000   
   SCD_T+            -    MCI_T-                2.185473156    0.9499993    237.0000     2.300499872       0.6240985   
                     -    MCI_T+                0.410890991    0.9642532    237.0000     0.426123530       1.0000000   
                     -    DAT_T-                3.515321398    1.3581021    237.0000     2.588407390       0.2866640   
                     -    DAT_T+                0.413090974    0.9817732    237.0000     0.420760068       1.0000000   
   MCI_T-            -    MCI_T+               -1.774582165    0.8432662    237.0000    -2.104415057       1.0000000   
                     -    DAT_T-                1.329848242    1.2611663    237.0000     1.054459091       1.0000000   
                     -    DAT_T+               -1.772382182    0.8936070    237.0000    -1.983402386       1.0000000   
   MCI_T+            -    DAT_T-                3.104430407    1.2821832    237.0000     2.421206653       0.4541941   
                     -    DAT_T+                0.002199983    0.8734138    237.0000     0.002518833       1.0000000   
   DAT_T-            -    DAT_T+               -3.102230424    1.3024901    237.0000    -2.381768973       0.5045598   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(VCAM1_ng_mL, na.rm = TRUE), Std=sd(VCAM1_ng_mL, na.rm = TRUE),
            Max=max(VCAM1_ng_mL, na.rm = TRUE), Min=min(VCAM1_ng_mL, na.rm = TRUE))
NA

5.15. CRP_Diag_T

(CRP_Diag_T_plot <- ggplot(DC_thesis_m,
                         aes(x = clinical_N_cat, y = CRP_pg_ml, 
                             colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "CRP (pg/mL)") +
    scale_y_continuous(breaks = seq(0,50000, by = 12500), limits = c(0, 50000)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = CRP_pg_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_m,
       postHoc = CRP_pg_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - CRP_pg_ml                                                                     
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F              p           
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       4.120047e+8      7    5.885781e+7    1.790353210    0.0899112   
   Age                     269993.5      1       269993.5    0.008212737    0.9278678   
   sex                    2550218.6      1      2550218.6    0.077573258    0.7808563   
   bmi                  1.592441e+8      1    1.592441e+8    4.843932380    0.0287085   
   E4_Positive          2.756193e+7      1    2.756193e+7    0.838386462    0.3607893   
   Residuals            7.791368e+9    237    3.287497e+7                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                   442.80197    1645.187    237.0000     0.26914986       1.0000000   
                     -    SCD_T-                -1088.85127    1016.775    237.0000    -1.07088760       1.0000000   
                     -    SCD_T+                 1308.95361    1647.101    237.0000     0.79470132       1.0000000   
                     -    MCI_T-                -1914.34671    1353.651    237.0000    -1.41421026       1.0000000   
                     -    MCI_T+                -3766.45201    1425.027    237.0000    -2.64307440       0.2453795   
                     -    DAT_T-                 1210.32662    2333.688    237.0000     0.51863257       1.0000000   
                     -    DAT_T+                  -96.76528    1507.826    237.0000    -0.06417538       1.0000000   
   CN_T+             -    SCD_T-                -1531.65324    1665.195    237.0000    -0.91980424       1.0000000   
                     -    SCD_T+                  866.15164    2080.400    237.0000     0.41633909       1.0000000   
                     -    MCI_T-                -2357.14868    1886.212    237.0000    -1.24967341       1.0000000   
                     -    MCI_T+                -4209.25397    1924.987    237.0000    -2.18664055       0.8329205   
                     -    DAT_T-                  767.52465    2673.774    237.0000     0.28705666       1.0000000   
                     -    DAT_T+                 -539.56725    1973.388    237.0000    -0.27342179       1.0000000   
   SCD_T-            -    SCD_T+                 2397.80488    1628.746    237.0000     1.47217884       1.0000000   
                     -    MCI_T-                 -825.49544    1316.868    237.0000    -0.62686286       1.0000000   
                     -    MCI_T+                -2677.60074    1386.078    237.0000    -1.93178213       1.0000000   
                     -    DAT_T-                 2299.17789    2298.552    237.0000     1.00027209       1.0000000   
                     -    DAT_T+                  992.08599    1461.918    237.0000     0.67861923       1.0000000   
   SCD_T+            -    MCI_T-                -3223.30032    1835.912    237.0000    -1.75569438       1.0000000   
                     -    MCI_T+                -5075.40562    1863.458    237.0000    -2.72364853       0.1942396   
                     -    DAT_T-                  -98.62699    2624.587    237.0000    -0.03757810       1.0000000   
                     -    DAT_T+                -1405.71890    1897.316    237.0000    -0.74089848       1.0000000   
   MCI_T-            -    MCI_T+                -1852.10530    1629.646    237.0000    -1.13650767       1.0000000   
                     -    DAT_T-                 3124.67333    2437.255    237.0000     1.28204622       1.0000000   
                     -    DAT_T+                 1817.58142    1726.932    237.0000     1.05249185       1.0000000   
   MCI_T+            -    DAT_T-                 4976.77862    2477.871    237.0000     2.00848995       1.0000000   
                     -    DAT_T+                 3669.68672    1687.907    237.0000     2.17410430       0.8592474   
   DAT_T-            -    DAT_T+                -1307.09190    2517.115    237.0000    -0.51928182       1.0000000   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(CRP_pg_ml, na.rm = TRUE), Std=sd(CRP_pg_ml, na.rm = TRUE),
            Max=max(CRP_pg_ml, na.rm = TRUE), Min=min(CRP_pg_ml, na.rm = TRUE))
NA
LS0tCnRpdGxlOiAiREVMQ09ERV9BbmFseXNpc19NYW51YWwiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KIyAxLiBMb2FkIGFsbCBsaWJyYXJpZXMgcmVxdWlyZWQKYGBge3J9CmxpYnJhcnkocmVhZHhsKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKCgpsaWJyYXJ5KCdkcGx5cicpCmxpYnJhcnkoJ3JlYWR4bCcpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShkcGx5cikgIyByZXF1aXJlZCBieSBjdXN0b20gZnVuY3Rpb24gb3V0bGllcl9yZW1vdmFsKCkKbGlicmFyeShqbXYpICMgYW5jb3ZhKCkKbGlicmFyeShnZ3Bsb3QyKSAjIGdncGxvdCgpCmxpYnJhcnkoZ3JpZEV4dHJhKSAjIGdyaWQuYXJyYW5nZSgpCgpgYGAKCiMgMi4gUHJlIGFuYWx5c2lzOiBEYXRhIGltcG9ydCBhbmQgY2xlYW5pbmcKCmBgYHtyfQpvbGlua19kZWxjb2RlPC0gcmVhZF9leGNlbCgnREVMQ09ERV9NYW51YWwgb25seS54bHN4JykKb2xpbmtfZGVsY29kZSA8LSBkYXRhLmZyYW1lKG9saW5rX2RlbGNvZGUpCgpjb2xuYW1lcyhvbGlua19kZWxjb2RlKQpEQ190aGVzaXNfbWFudWFsIDwtIHN1YnNldChvbGlua19kZWxjb2RlLCBzZWxlY3QgPSBjKEJhcmNvZGVfQ1NGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlLTDQwX25nX21sLCBBWExfbmdfbWwsIFR5cm8zX3BnX21sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSRU0yX3BnX21sLCBDMXFfbmdfbWwsIEMzX25nX21sLCBDNF9uZ19tbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWN0b3JfQl9uZ19tbCwgRmFjdG9yX0hfbmdfbWwsIE1JRl9wZ19tbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTkZSMV9uZ19tTCwgVE5GUjJfbmdfbUwsIElDQU0xX25nX21MLCBWQ0FNMV9uZ19tTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUlBfcGdfbWwsIEFnZSwgc2V4LCBibWksIEU0X1Bvc2l0aXZlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm1kaWFnLCBBQl9SYXRpb19QYXRobywgdFRhdV9QYXRobywgQVQsIEFOKSkKCkRDX3RoZXNpc19tYW51YWwkQV9OX2NhdCA8LSBmYWN0b3IoaWZlbHNlKERDX3RoZXNpc19tYW51YWwkQU4gPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkEtVC0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRENfdGhlc2lzX21hbnVhbCRBTiA9PSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkErVC0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19tYW51YWwkQU4gPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQS1UKyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkErVCsiKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkEtVC0iLCAiQS1UKyIsICJBK1QtIiwgIkErVCsiKSkKdGFibGUoRENfdGhlc2lzX21hbnVhbCRBX05fY2F0KQpgYGAKCmBgYHtyfQpEQ190aGVzaXNfbWFudWFsJERpYWcgPC0gZmFjdG9yKGlmZWxzZShEQ190aGVzaXNfbWFudWFsJHBybWRpYWcgPT0gMCB8IERDX3RoZXNpc19tYW51YWwkcHJtZGlhZyA9PSAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ04iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19tYW51YWwkcHJtZGlhZyA9PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0NEIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRENfdGhlc2lzX21hbnVhbCRwcm1kaWFnID09IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNQ0kiLCAiREFUIikpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygnQ04nLCJTQ0QiLCAiTUNJIiwgIkRBVCIpKQp0YWJsZShEQ190aGVzaXNfbWFudWFsJERpYWcpCmBgYAoKYGBge3J9CkRDX3RoZXNpc19tYW51YWwkY2xpbmljYWxfTl9jYXQgPC0gZmFjdG9yKGlmZWxzZShEQ190aGVzaXNfbWFudWFsJERpYWcgPT0gIkNOIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ190aGVzaXNfbWFudWFsJHRUYXVfUGF0aG8gPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDTl9ULSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRENfdGhlc2lzX21hbnVhbCREaWFnID09ICJDTiIgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDX3RoZXNpc19tYW51YWwkdFRhdV9QYXRobyA9PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDTl9UKyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19tYW51YWwkRGlhZyA9PSAiU0NEIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDX3RoZXNpc19tYW51YWwkdFRhdV9QYXRobyA9PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0NEX1QtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19tYW51YWwkRGlhZyA9PSAiU0NEIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ190aGVzaXNfbWFudWFsJHRUYXVfUGF0aG8gPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTQ0RfVCsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19tYW51YWwkRGlhZyA9PSAiTUNJIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRENfdGhlc2lzX21hbnVhbCR0VGF1X1BhdGhvID09IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1DSV9ULSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19tYW51YWwkRGlhZyA9PSAiTUNJIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDX3RoZXNpc19tYW51YWwkdFRhdV9QYXRobyA9PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUNJX1QrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19tYW51YWwkRGlhZyA9PSAiREFUIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ190aGVzaXNfbWFudWFsJHRUYXVfUGF0aG8gPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEQVRfVC0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19tYW51YWwkRGlhZyA9PSAiREFUIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRENfdGhlc2lzX21hbnVhbCR0VGF1X1BhdGhvID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRBVF9UKyIsICdvdGhlcnMnKSkpKSkpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoJ0NOX1QtJywiQ05fVCsiLCAnU0NEX1QtJywgJ1NDRF9UKycsICJNQ0lfVC0iLCAiTUNJX1QrIiwiREFUX1QtIiwgIkRBVF9UKyIpKQp0YWJsZShEQ190aGVzaXNfbWFudWFsJGNsaW5pY2FsX05fY2F0KQpgYGAKT3V0bGllciByZW1vdmFsIGZ1bmN0aW9uCkhpZ2hlciB0aGFuIG9yIGxlc3MgdGhhbiAzIHN0YW5kYXJkIGRldmlhdGlvbnMKYGBge3J9Cm91dGxpZXJfcmVtb3ZhbCA8LSBmdW5jdGlvbihkZikgewogIGZpbmQub3V0bGllciA8LSBmdW5jdGlvbihkZikgewogICAgaWYoIWlzLm51bWVyaWMoZGYpKSB7CiAgICAgIGRmCiAgICB9CiAgICBlbHNlIHsKICAgICAgYXJpdGgubWVhbiA8LSBtZWFuKGRmLCBuYS5ybSA9IFRSVUUpCiAgICAgIHN0LmRldiA8LSBzZChkZiwgbmEucm0gPSBUUlVFKQogICAgICBkZlt3aGljaChkZiA+IChhcml0aC5tZWFuICsgMypzdC5kZXYpIHwgZGYgPCAoYXJpdGgubWVhbiAtIDMqc3QuZGV2KSldIDwtIE5BCiAgICAgIGRmCiAgICB9CiAgfQogIGRmICU+JSBkcGx5cjo6bXV0YXRlX2FsbChmaW5kLm91dGxpZXIpCn0KYGBgCgpSZW1vdmVkIG91dGxpZXJzCmBgYHtyfQpEQ190aGVzaXNfbWFudWFsX2NsZWFuIDwtIG91dGxpZXJfcmVtb3ZhbChEQ190aGVzaXNfbWFudWFsWzE6MTZdKQpgYGAKCkNoZWNrIGZvciBtZXJnZSBvdXRsaWVyIHJlbW92ZWQgY29sdW1ucwpgYGB7cn0KZGltKERDX3RoZXNpc19tYW51YWxfY2xlYW4pCkRDX3RoZXNpc19tIDwtIG1lcmdlKERDX3RoZXNpc19tYW51YWxfY2xlYW4sCiAgICAgICAgICAgICAgICAgICAgIERDX3RoZXNpc19tYW51YWxbYygxLCAxNzpuY29sKERDX3RoZXNpc19tYW51YWwpKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAiQmFyY29kZV9DU0YiKQpkaW0oRENfdGhlc2lzX20pCmBgYAoKT21pdCBOQXMgdG8gaGF2ZSBob21vZ2Vub3VzIHNhbXBsZXMKYGBge3J9CkRDX3RoZXNpc19tIDwtIG5hLm9taXQoRENfdGhlc2lzX20pCgoKdGFibGUoRENfdGhlc2lzX20kQV9OX2NhdCkKdGFibGUoRENfdGhlc2lzX20kRGlhZykKdGFibGUoRENfdGhlc2lzX20kY2xpbmljYWxfTl9jYXQpCmBgYAoKTWFraW5nIEJNSSBhcyBjaGFyYWN0ZXIKYGBge3J9CkRDX3RoZXNpc19tJGJtaSA8LSBhcy5udW1lcmljKGFzLmNoYXJhY3RlcihEQ190aGVzaXNfbSRibWkpKSAKYGBgCkRhdGEgaXMgcmVhZHkgZm9yIGFuYWx5c2lzCgojIDMuIEFUIHNjaGVtZQojIyAzLjEuIFlLTDQwX0FUCmBgYHtyfQooWUtMNDBfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IFlLTDQwX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJZS0w0MCAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDEyMDAsIGJ5ID0gMjAwKSwgbGltaXRzID0gYygwLDEyMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IFlLTDQwX25nX21sIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gWUtMNDBfbmdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoWUtMNDBfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoWUtMNDBfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oWUtMNDBfbmdfbWwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDMuMi4gQVhMX0FUCmBgYHtyfQooQVhMX0FfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBBWExfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkFYTCAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDUwLCBieSA9IDEwKSwgbGltaXRzID0gYygwLDUwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBBWExfbmdfbWwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBBWExfbmdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEFYTF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEFYTF9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChBWExfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQVhMX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKIyMgMy4zLiBUeXJvM19BVApgYGB7cn0KKFR5cm8zX0FfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gVHlybzNfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUeXJvMyAocGcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDE0MDAwLCBieSA9IDIwMDApLCBsaW1pdHMgPSBjKDAsMTQwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IFR5cm8zX3BnX21sIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVHlybzNfcGdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVHlybzNfcGdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVHlybzNfcGdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVHlybzNfcGdfbWwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDMuNC4gVFJFTTJfQVQKYGBge3J9CihUUkVNMl9BX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gVFJFTTJfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRSRU0yIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMTQwMDAsIGJ5ID0gMjAwMCksIGxpbWl0cyA9IGMoMCwxNDAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVFJFTTJfcGdfbWwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBUUkVNMl9wZ19tbCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVFJFTTJfcGdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChUUkVNMl9wZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChUUkVNMl9wZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihUUkVNMl9wZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyAzLjUuIEMxcV9BVApgYGB7cn0KKEMxcV9BX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gQzFxX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJDMXEgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw2MDAsIGJ5ID0gMTAwKSwgbGltaXRzID0gYygwLDYwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCgphbmNvdmEoZm9ybXVsYSA9IEMxcV9uZ19tbCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEMxcV9uZ19tbCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzFxX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzFxX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEMxcV9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDMXFfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgMy42LiBDM19BVApgYGB7cn0KKEMzX0FfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gQzNfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJDMyAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDUwMDAsIGJ5ID0gNTAwKSwgbGltaXRzID0gYygwLCA1MDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBDM19uZ19tbCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEMzX25nX21sIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihDM19uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEMzX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEMzX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEMzX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDMuNy4gQzRfQVQKYGBge3J9CihDNF9BX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gQzRfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkM0IChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMjAwMCwgYnkgPSA1MDApLCBsaW1pdHMgPSBjKDAsIDIwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEM0X25nX21sIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQzRfbmdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEM0X25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzRfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzRfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzRfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgMy44LiBGYWN0b3JCX0FUCmBgYHtyfQooRkJfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IEZhY3Rvcl9CX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJGYWN0b3IgQiAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDIwMDAsIGJ5ID0gNTAwKSwgbGltaXRzID0gYygwLCAyMDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBGYWN0b3JfQl9uZ19tbCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEZhY3Rvcl9CX25nX21sIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihGYWN0b3JfQl9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEZhY3Rvcl9CX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEZhY3Rvcl9CX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEZhY3Rvcl9CX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDMuOS4gRmFjdG9ySF9BVApgYGB7cn0KKEZIX0FfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBGYWN0b3JfSF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiRmFjdG9yIEggKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwyMDAwLCBieSA9IDUwMCksIGxpbWl0cyA9IGMoMCwgMjAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gRmFjdG9yX0hfbmdfbWwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBGYWN0b3JfSF9uZ19tbCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChGYWN0b3JfSF9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChGYWN0b3JfSF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihGYWN0b3JfSF9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyAzLjEwLiBNSUZfQVQKYGBge3J9CihNSUZfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IE1JRl9wZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiTUlGIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMzAwMDAsIGJ5ID0gNTAwMCksIGxpbWl0cyA9IGMoMCwgMzAwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gTUlGX3BnX21sIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gTUlGX3BnX21sIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihNSUZfcGdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChNSUZfcGdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoTUlGX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKE1JRl9wZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyAzLjExLiBUTkZSMV9BVApgYGB7cn0KKFRORlIxX0FfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gVE5GUjFfbmdfbUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUTkZSMSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDMsIGJ5ID0gMC41KSwgbGltaXRzID0gYygwLCAzKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IFRORlIxX25nX21MIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVE5GUjFfbmdfbUwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFRORlIxX25nX21MLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVE5GUjFfbmdfbUwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVE5GUjFfbmdfbUwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVE5GUjFfbmdfbUwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgMy4xMi4gVE5GUjJfQVQKYGBge3J9CihUTkZSMl9BX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gVE5GUjJfbmdfbUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRORlIyIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNSwgYnkgPSAxKSwgbGltaXRzID0gYygwLCA1KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUTkZSMl9uZ19tTCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFRORlIyX25nX21MIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUTkZSMl9uZ19tTCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRORlIyX25nX21MLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRORlIyX25nX21MLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRORlIyX25nX21MLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDMuMTMuIElDQU0xX0FUCmBgYHtyfQooSUNBTTFfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IElDQU0xX25nX21MLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJJQ0FNMSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDIwLCBieSA9IDUpLCBsaW1pdHMgPSBjKDAsIDIwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBJQ0FNMV9uZ19tTCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IElDQU0xX25nX21MIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihJQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKElDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KElDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKElDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDMuMTQuIFZDQU0xX0FUCmBgYHtyfQooVkNBTTFfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IFZDQU0xX25nX21MLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJWQ0FNMSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDQwLCBieSA9IDEwKSwgbGltaXRzID0gYygwLCA0MCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVkNBTTFfbmdfbUwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBWQ0FNMV9uZ19tTCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyAzLjE1LiBDUlBfQVQKYGBge3J9CihDUlBfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IENSUF9wZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQ1JQIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNTAwMDAsIGJ5ID0gMTI1MDApLCBsaW1pdHMgPSBjKDAsIDUwMDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBDUlBfcGdfbWwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBDUlBfcGdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKENSUF9wZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKENSUF9wZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChDUlBfcGdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQ1JQX3BnX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCgojIDQuIERpYWdub3NpcyBzY2hlbWUKIyMgNC4xLiBZS0w0MF9EaWFnCmBgYHtyfQooWUtMNDBfZGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IERpYWcsIHkgPSBZS0w0MF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICBnZW9tX2JveHBsb3QoKSArCiAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiWUtMNDAgKG5nL21MKSIpICsKICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDEyMDAsIGJ5ID0gMjAwKSwgbGltaXRzID0gYygwLDEyMDApKSArCiAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArIAogICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiLCAic3ByaW5nZ3JlZW40IikpICsKICAgdGhlbWVfYncoKSArCiAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBZS0w0MF9uZ19tbCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFlLTDQwX25nX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihZS0w0MF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuMi4gQVhMX0RpYWcKYGBge3J9CihBWExfZGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gQVhMX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQVhMIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNTAsIGJ5ID0gMTApLCBsaW1pdHMgPSBjKDAsNTApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKyAKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBBWExfbmdfbWwgfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBBWExfbmdfbWwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihBWExfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChBWExfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQVhMX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEFYTF9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA0LjMuIFR5cm8zX0RpYWcKYGBge3J9CihUeXJvM19EaWFnX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IFR5cm8zX3BnX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gRGlhZywgZmlsbCA9IERpYWcpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUeXJvMyAocGcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDEwMDAwLCBieSA9IDEwMDApLCBsaW1pdHMgPSBjKDAsMTAwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKyAKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUeXJvM19wZ19tbCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFR5cm8zX3BnX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUeXJvM19wZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuNC4gVFJFTTJfRGlhZwpgYGB7cn0KKFRSRU0yX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gVFJFTTJfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRSRU0yIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMTQwMDAsIGJ5ID0gMjAwMCksIGxpbWl0cyA9IGMoMCwxNDAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiLCAic3ByaW5nZ3JlZW40IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVFJFTTJfcGdfbWwgfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBUUkVNMl9wZ19tbCB+IERpYWcsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoRGlhZyklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVFJFTTJfcGdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChUUkVNMl9wZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChUUkVNMl9wZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihUUkVNMl9wZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA0LjUuIEMxcV9EaWFnCmBgYHtyfQooQzFxX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IEMxcV9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkMxcSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDYwMCwgYnkgPSAxMDApLCBsaW1pdHMgPSBjKDAsNjAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBDMXFfbmdfbWwgfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBDMXFfbmdfbWwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEMxcV9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEMxcV9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChDMXFfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzFxX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuNi4gQzNfRGlhZwpgYGB7cn0KKEMzX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gQzNfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkMzIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNTAwMCwgYnkgPSA1MDApLCBsaW1pdHMgPSBjKDAsIDUwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwiaW5kaWFucmVkMSIsICIjMWNhOWM5IiwgInNwcmluZ2dyZWVuNCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEMzX25nX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQzNfbmdfbWwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEMzX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzNfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzNfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzNfbmdfbWwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDQuNy4gQzRfRGlhZwpgYGB7cn0KKEM0X0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gQzRfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkM0IChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMjAwMCwgYnkgPSA1MDApLCBsaW1pdHMgPSBjKDAsIDIwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwiaW5kaWFucmVkMSIsICIjMWNhOWM5IiwgInNwcmluZ2dyZWVuNCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEM0X25nX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQzRfbmdfbWwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEM0X25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzRfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzRfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzRfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC44LiBGYWN0b3JCX0RpYWcKYGBge3J9CihGQl9EaWFnX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IEZhY3Rvcl9CX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gRGlhZywgZmlsbCA9IERpYWcpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJGYWN0b3IgQiAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDIwMDAsIGJ5ID0gNTAwKSwgbGltaXRzID0gYygwLCAyMDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBGYWN0b3JfQl9uZ19tbCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEZhY3Rvcl9CX25nX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihGYWN0b3JfQl9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEZhY3Rvcl9CX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEZhY3Rvcl9CX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEZhY3Rvcl9CX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuOS4gRmFjdG9ySF9EaWFnCmBgYHtyfQooRkhfRGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IERpYWcsIHkgPSBGYWN0b3JfSF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiRmFjdG9yIEggKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwyMDAwLCBieSA9IDUwMCksIGxpbWl0cyA9IGMoMCwgMjAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiLCAic3ByaW5nZ3JlZW40IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCgphbmNvdmEoZm9ybXVsYSA9IEZhY3Rvcl9IX25nX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gRmFjdG9yX0hfbmdfbWwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEZhY3Rvcl9IX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC4xMC4gTUlGX0RpYWcKYGBge3J9CihNSUZfRGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gTUlGX3BnX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiTUlGIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMzAwMDAsIGJ5ID0gNTAwMCksIGxpbWl0cyA9IGMoMCwgMzAwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwiaW5kaWFucmVkMSIsICIjMWNhOWM5IiwgInNwcmluZ2dyZWVuNCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IE1JRl9wZ19tbCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IE1JRl9wZ19tbCB+IERpYWcsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoRGlhZyklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oTUlGX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoTUlGX3BnX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KE1JRl9wZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihNSUZfcGdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC4xMS4gVE5GUjFfRGlhZwpgYGB7cn0KKFRORlIxX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gVE5GUjFfbmdfbUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRORlIxIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMywgYnkgPSAwLjUpLCBsaW1pdHMgPSBjKDAsIDMpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwiaW5kaWFucmVkMSIsICIjMWNhOWM5IiwgInNwcmluZ2dyZWVuNCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IFRORlIxX25nX21MIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVE5GUjFfbmdfbUwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFRORlIxX25nX21MLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVE5GUjFfbmdfbUwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVE5GUjFfbmdfbUwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVE5GUjFfbmdfbUwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC4xMi4gVE5GUjJfRGlhZwpgYGB7cn0KKFRORlIyX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gVE5GUjJfbmdfbUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRORlIyIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNSwgYnkgPSAxKSwgbGltaXRzID0gYygwLCA1KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUTkZSMl9uZ19tTCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFRORlIyX25nX21MIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUTkZSMl9uZ19tTCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRORlIyX25nX21MLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRORlIyX25nX21MLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRORlIyX25nX21MLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuMTMuIElDQU0xX0RpYWcKYGBge3J9CihJQ0FNMV9EaWFnX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IElDQU0xX25nX21MLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gRGlhZywgZmlsbCA9IERpYWcpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJJQ0FNMSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDIwLCBieSA9IDUpLCBsaW1pdHMgPSBjKDAsIDIwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IElDQU0xX25nX21MIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gSUNBTTFfbmdfbUwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKElDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC4xNC4gVkNBTTFfRGlhZwpgYGB7cn0KKFZDQU0xX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gVkNBTTFfbmdfbUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlZDQU0xIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNDAsIGJ5ID0gMTApLCBsaW1pdHMgPSBjKDAsIDQwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IFZDQU0xX25nX21MIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVkNBTTFfbmdfbUwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFZDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDQuMTUuIENSUF9EaWFnCmBgYHtyfQooQ1JQX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IENSUF9wZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkNSUCAocGcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDUwMDAwLCBieSA9IDEyNTAwKSwgbGltaXRzID0gYygwLCA1MDAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiLCAic3ByaW5nZ3JlZW40IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQ1JQX3BnX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQ1JQX3BnX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihDUlBfcGdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChDUlBfcGdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQ1JQX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKENSUF9wZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgoKCgojIDUuIERpYWdub3NpcyArIFRhdSBzY2hlbWUKIyMgNS4xLiBZS0w0MF9EaWFnX1QKYGBge3J9CihZS0w0MF9kaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBZS0w0MF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICBnZW9tX2JveHBsb3QoKSArCiAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiWUtMNDAgKG5nL21MKSIpICsKICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDEyMDAsIGJ5ID0gMjAwKSwgbGltaXRzID0gYygwLDEyMDApKSArCiAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygnQ04gVC0nLCAnQ04gVCsnLCAiU0NEIFQtIiwgIlNDRCBUKyIsICJNQ0kgVC0iLCAiTUNJIFQrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEQVQgVC0nLCdEQVQgVCsnKSkgKwogICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibGFjayIsICJibGFjayIsImJsYWNrIiwgJ2JsYWNrJykpICsKICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgdGhlbWVfYncoKSArCiAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBZS0w0MF9uZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBZS0w0MF9uZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihZS0w0MF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpKQoKYGBgCgojIyA1LjIuIEFYTF9EaWFnX1QKYGBge3J9CihBWExfZGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IEFYTF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkFYTCAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDUwLCBieSA9IDEwKSwgbGltaXRzID0gYygwLDUwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiLCJhcXVhbWFyaW5lMiIsICdkZWVwcGluaycpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEFYTF9uZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBBWExfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQVhMX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQVhMX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEFYTF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihBWExfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNS4zLiBUeXJvM19EaWFnX1QKYGBge3J9CihUeXJvM19EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBUeXJvM19wZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiVHlybzMgKHBnL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwxMDAwMCwgYnkgPSAxMDAwKSwgbGltaXRzID0gYygwLDEwMDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiLCJhcXVhbWFyaW5lMiIsICdkZWVwcGluaycpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IFR5cm8zX3BnX21sIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFR5cm8zX3BnX21sIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVHlybzNfcGdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVHlybzNfcGdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVHlybzNfcGdfbWwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDUuNC4gVFJFTTJfRGlhZ19UCmBgYHtyfQooVFJFTTJfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gVFJFTTJfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRSRU0yIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMTQwMDAsIGJ5ID0gMjAwMCksIGxpbWl0cyA9IGMoMCwxNDAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibGFjayIsICJibGFjayIsImJsYWNrIiwgJ2JsYWNrJykpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsJ2Jpc3F1ZTInLCAibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIiwiYXF1YW1hcmluZTIiLCAnZGVlcHBpbmsnKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUUkVNMl9wZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBUUkVNMl9wZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUUkVNMl9wZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpKQoKYGBgCgojIyA1LjUuIEMxcV9EaWFnX1QKYGBge3J9CihDMXFfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IEMxcV9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkMxcSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDYwMCwgYnkgPSAxMDApLCBsaW1pdHMgPSBjKDAsNjAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiLCJhcXVhbWFyaW5lMiIsICdkZWVwcGluaycpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEMxcV9uZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBDMXFfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzFxX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzFxX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEMxcV9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDMXFfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNS42LiBDM19EaWFnX1QKYGBge3J9CihDM19EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBDM19uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQzMgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw1MDAwLCBieSA9IDUwMCksIGxpbWl0cyA9IGMoMCwgNTAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibGFjayIsICJibGFjayIsImJsYWNrIiwgJ2JsYWNrJykpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsJ2Jpc3F1ZTInLCAibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIiwiYXF1YW1hcmluZTIiLCAnZGVlcHBpbmsnKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBDM19uZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBDM19uZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihDM19uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEMzX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEMzX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEMzX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDUuNy4gQzRfRGlhZ19UCmBgYHtyfQooQzRfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gQzRfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkM0IChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMjAwMCwgYnkgPSA1MDApLCBsaW1pdHMgPSBjKDAsIDIwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQzRfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQzRfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzRfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChDNF9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChDNF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDNF9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjguIEZhY3RvckJfRGlhZ19UCmBgYHtyfQooRkJfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gRmFjdG9yX0JfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkZhY3RvciBCIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMjAwMCwgYnkgPSA1MDApLCBsaW1pdHMgPSBjKDAsIDIwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gRmFjdG9yX0JfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gRmFjdG9yX0JfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oRmFjdG9yX0JfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChGYWN0b3JfQl9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChGYWN0b3JfQl9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihGYWN0b3JfQl9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjkuIEZhY3RvckhfRGlhZ19UCmBgYHtyfQooRkhfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gRmFjdG9yX0hfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkZhY3RvciBIIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMjAwMCwgYnkgPSA1MDApLCBsaW1pdHMgPSBjKDAsIDIwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCgphbmNvdmEoZm9ybXVsYSA9IEZhY3Rvcl9IX25nX21sIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEZhY3Rvcl9IX25nX21sIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEZhY3Rvcl9IX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNS4xMC4gTUlGX0RpYWdfVApgYGB7cn0KKE1JRl9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gTUlGX3BnX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiTUlGIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMzAwMDAsIGJ5ID0gNTAwMCksIGxpbWl0cyA9IGMoMCwgMzAwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gTUlGX3BnX21sIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IE1JRl9wZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihNSUZfcGdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChNSUZfcGdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoTUlGX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKE1JRl9wZ19tbCwgbmEucm0gPSBUUlVFKSkKCmBgYAoKIyMgNS4xMS4gVE5GUjFfRGlhZ19UCmBgYHtyfQooVE5GUjFfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gVE5GUjFfbmdfbUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRORlIxIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMywgYnkgPSAwLjUpLCBsaW1pdHMgPSBjKDAsIDMpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVE5GUjFfbmdfbUwgfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVE5GUjFfbmdfbUwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVE5GUjFfbmdfbUwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChUTkZSMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChUTkZSMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihUTkZSMV9uZ19tTCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjEyLiBUTkZSMl9EaWFnX1QKYGBge3J9CihUTkZSMl9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBUTkZSMl9uZ19tTCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiVE5GUjIgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw1LCBieSA9IDEpLCBsaW1pdHMgPSBjKDAsIDUpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVE5GUjJfbmdfbUwgfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVE5GUjJfbmdfbUwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVE5GUjJfbmdfbUwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChUTkZSMl9uZ19tTCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChUTkZSMl9uZ19tTCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihUTkZSMl9uZ19tTCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjEzLiBJQ0FNMV9EaWFnX1QKYGBge3J9CihJQ0FNMV9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBJQ0FNMV9uZ19tTCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiSUNBTTEgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwyMCwgYnkgPSA1KSwgbGltaXRzID0gYygwLCAyMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibGFjayIsICJibGFjayIsImJsYWNrIiwgJ2JsYWNrJykpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsJ2Jpc3F1ZTInLCAibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIiwiYXF1YW1hcmluZTIiLCAnZGVlcHBpbmsnKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IElDQU0xX25nX21MIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IElDQU0xX25nX21MIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKElDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNS4xNC4gVkNBTTFfRGlhZ19UCmBgYHtyfQooVkNBTTFfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gVkNBTTFfbmdfbUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlZDQU0xIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNDAsIGJ5ID0gMTApLCBsaW1pdHMgPSBjKDAsIDQwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiLCJhcXVhbWFyaW5lMiIsICdkZWVwcGluaycpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gVkNBTTFfbmdfbUwgfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVkNBTTFfbmdfbUwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSkKCmBgYAoKIyMgNS4xNS4gQ1JQX0RpYWdfVApgYGB7cn0KKENSUF9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gQ1JQX3BnX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQ1JQIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNTAwMDAsIGJ5ID0gMTI1MDApLCBsaW1pdHMgPSBjKDAsIDUwMDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiLCJhcXVhbWFyaW5lMiIsICdkZWVwcGluaycpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IENSUF9wZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBDUlBfcGdfbWwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQ1JQX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQ1JQX3BnX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KENSUF9wZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDUlBfcGdfbWwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCgoK